第1关:欧拉筛法求素数

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

编程要求
根据提示,在右侧编辑器补充代码,输入n,利用欧拉筛法求小于n的所有素数。

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

        
#代码结束
print(l)

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

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

测试说明
平台会对你编写的代码进行测试:
显示结果如下

 

f1=open("sy8//中学诗词.txt","r",encoding='utf-8')
zj=[]
#代码开始
authors = set()
for r in f1:
    if ',' not in r and '!' not in r and '。' not in r:
        parts = r.rfind(' ')
        if parts != -1:
            author = r[parts + 1:].strip()
            authors.add(author)
    
zj=sorted(list(authors))
#代码结束
for i in range(1,len(zj)+1):
    print(i,zj[i-1])
f1.close()

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

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

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

编程要求
根据提示,在右侧编辑器补充代码,输入人数n和序号m,输出出圈的序号。

测试说明
平台会对你编写的代码进行测试:

测试输入:
输入人数6
输入序号4
预期输出:
4
2
1
3
6
5

测试输入:
输入人数10
输入序号3
预期输出:
3
6
9
2
7
1
8
5
10
4

n=eval(input("输入人数"))
k=eval(input("输入序号"))
m=3
#代码开始
l = list(range(0,n))
x=0
while len(l) > 0:
    x = (x + k - 1)%len(l)
    print(l[x]+1)
    l.remove(l[x])

#代码结束

第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”。

测试说明
平台会对你编写的代码进行测试:

测试输入:21;
预期输出:
0 14

测试输入:'24';
预期输出:
1 14

注意:两个数之间用空格隔开

测试输入:'6';
预期输出: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"))
#代码开始
sum_lst1 = False
for i in range(len(lst1)):
    for m in range(i+1,len(lst1)):
        if lst1[i] + lst1[m] == n:
            print(i,m)
            sum_lst1 = True
            break
    if sum_lst1 :
        break
if not sum_lst1:
    print("not found")

#代码结束

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

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

当用户输入1
输入用户姓名和密码后,若用户在列表中,显示用户已存在 无法增加。
若不存在,则将用户名和密码追加到相应的列表中。并显示用户已增加。

当用户输入2
输入用户姓名后,
若用户不在列表中,显示用户不存在 不能删除。若在列表中,则将用户名和密码删除,并显示用户已删除。

当用户输入3
输入用户姓名后,
若用户不在列表中,显示用户不存在 不能查询。若在列表中,则显示密码。

当用户输入4,则退出循环

测试说明
平台会对你编写的代码进行测试:

示范1
请选择
1 用户增加
2 用户删除
3 用户查询
4 查看数据,退出系统
请输入1
请输入用户名mike
请输入密码123456
用户已经存在,无法增加
请输入1
请输入用户名mickey
请输入密码123456
用户已增加
请输入4
用户名mary  密码123456
用户名harry 密码888888
用户名mike  密码999999
用户名tom   密码765432
用户名rose  密码678901
用户名mickey密码123456

示范2
请选择
1 用户增加
2 用户删除
3 用户查询
4 查看数据,退出系统
请输入2
请输入用户名kitty
用户不存在,无法删除
请输入2
请输入用户名mary
用户已删除
请输入4
用户名harry 密码888888
用户名mike  密码999999
用户名tom   密码765432
用户名rose  密码678901

示范3
请选择
1 用户增加
2 用户删除
3 用户查询
4 查看数据,退出系统
请输入3
请输入用户名mary
密码123456
请输入3
请输入用户名kitty
用户不存在
请输入4
用户名mary  密码123456
用户名harry 密码888888
用户名mike  密码999999
用户名tom   密码765432
用户名rose  密码678901

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

 

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐