Python头歌 实验八 列表

第1关:欧拉筛法求素数

任务描述
本关任务:编写一个欧拉筛法求素数的小程序。

n=eval(input())
#代码开始
s = list(range(2,n+1))
for i in s:
    for j in s:
        if j%i==0 and j!=i:
            s.remove(j)
#代码结束
print(s)
    

第2关:统计文档中诗人列表

任务描述
本关任务:编写一个程序,将文档《中学诗词》中作者的姓名加入一个列表,按作者的姓名排序。显示列表中作者的序号和姓名。
如图所示,标题行显示诗名(或词名空格词牌名)、空格、作者
注意:其他行也可能包含空格,但标题行不包含逗号、句号、感叹号

def extract_authors(file_path):
    with open(file_path, 'r', encoding='utf-8') as file:
        authors = set()  # 使用集合来存储作者名,自动去重

        for line in file:
            line = line.strip()
            if not line:  # 跳过空行
                continue
            
            # 检查行是否包含诗句或其他非诗人名字的内容
            if any(char in line for char in ['。', ',', '!', '?']):
                continue
            
            # 分割行,提取作者名
            parts = line.split(' ')
            if len(parts) >= 2:  # 至少有两个部分(标题和作者)
                author = parts[-1].strip()  # 假设作者名是最后一部分
                if 2 <= len(author) <= 10:  # 只保留长度合理的作者名
                    authors.add(author)

    return sorted(list(authors))

def main():
    file_path = "sy8//中学诗词.txt"
    authors = extract_authors(file_path)

    for i, author in enumerate(authors, start=1):
        print(f"{i} {author}")

if __name__ == "__main__":
    main()

第3关:使用列表求解约瑟夫环

任务描述
本关任务:编写一个使用列表求解约瑟夫环的问题

约瑟夫问题可以这样描述:n个人按1,2,3,… ,n编号,并顺序围坐一圈。开始按照1,2,3,… ,m 报数,凡报到 m 的出列。直到所有人出列为止。下图模拟n为8m为4的出列顺序

Python头歌 实验八 列表_第1张图片

n=eval(input("输入人数"))
m=eval(input("输入序号"))
#代码开始
l,k,x=[],[],0
for i in range (1,n+1):
    l.append(i)
while len(k)

第4关:两数之和

任务描述
本关任务:
对于一个不包含重复数字的有序列表
[1, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 18, 19, 20, 21, 29, 34, 54, 65]
从键盘输入n,查找是否有两数之和等于n,若有则返回两数的下标(找到一组即可且要求其中的一个数尽量小),若所有数均不满足条件则输出“not found”。

lst1=[1,4,5,6,7,8,9,10,11,12,13,15,18,19,20,21,29,34,54,65]
n=eval(input("请输入n"))
#代码开始
a , x=-1,0
for i in lst1:
    a+=1
    b=-1
    for j in lst1:
        b+=1
        if i+j==n:
            print(a,b)
            x=1
    if x==1:
        break
if x==0:
    print('not found')
    #代码结束

第5关:用户数据的增加、删除、查询

任务描述
用户列表和密码列表如下所示
yhlb=["mary","harry","mike","tom","rose"]
mmlb=["123456","888888","999999","765432","678901"]
补充程序,实现对用户和密码列表进行增加、删除、查询。
程序显示菜单如下
请选择
1 用户增加
2 用户删除
3 用户查询
4 退出系统

yhlb=["mary","harry","mike","tom","rose"]
mmlb=["123456","888888","999999","765432","678901"]
print("""请选择
1 用户增加
2 用户删除
3 用户查询
4 查看数据,退出系统""")
#代码开始
while True:
    x=eval(input('请输入'))
    if x==1:
        n=input('请输入用户名')
        s=input('请输入密码')
        if n in yhlb:
            print('用户已经存在 无法增加')
        else:
            yhlb.append(n)
            mmlb.append(s)
            print('用户已增加')
    elif x==2:
        n=input('请输入用户名')
        if n not in yhlb:
            print('用户不存在 无法删除')
        else:
            yhlb.remove(n)
            k=-1
            for i in yhlb:
                k+=1
                if i==n:
                    mmlb.remove(mmlb[k])
            print('用户已删除')
    elif x==3:
        n=input('请输入用户名')
        if n not in yhlb:
            print('用户不存在')
        else:
            k = -1
            for i in yhlb:
                k+=1
                if i==n:
                    print('密码'+str(mmlb[k]))
    else:
        break
#代码结束
for i in range(0,len(yhlb)):
    print("用户名{:6}密码{:6}".format(yhlb[i],mmlb[i]))

你可能感兴趣的:(python,开发语言)