本关任务:编写一个欧拉筛法求素数的小程序。
为了完成本关任务,你需要掌握:1.了解欧拉筛法,2.如何处理列表。
欧拉筛法其运用的原理是质数的倍数一定不是质数。因此将质数的倍数直接标记成合数,以达到筛选质数的目的。 例如,求30之内的素数,首先建立从包含2和30的数列 2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30 然后 筛除所有2的倍数 2,3,5,7,9,11,13,15,17,19,21,23,25,27,29 然后 筛除所有3的倍数 2,3,5,7,11,13,17,19,23,25,29 然后 筛除所有5的倍数 2,3,5,7,11,13,17,19,23,29 …… 剩余的数就是小于等于30的所有素数,即 2,3,5,7,11,13,17,19,23,29
列表的添加 ls.append(x) 在列表ls最后增加一个元素x ls.remove(x) 将列表中出现的第一个元素x删除 for x in ls: 遍历列表
根据提示,在右侧编辑器补充代码,输入n,利用欧拉筛法求小于n的所有素数。
平台会对你编写的代码进行测试:
测试输入:100; 预期输出:
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
宝剑锋从磨砺出,梅花香自苦寒来 开始你的任务吧,祝你成功!
n=eval(input())
#代码开始
ls=[]
ls.append(2)
for i in range(3,n+1):
flag=1
for j in range(2,i):
if i%j==0:
flag=0
if flag==1:
ls.append(i)
本关任务:编写一个程序,将文档《中学诗词》中作者的姓名加入一个列表,按作者的姓名排序。显示列表中作者的序号和姓名。 如图所示,标题行显示诗名(或词名空格词牌名)、空格、作者 注意:其他行也可能包含空格,但标题行不包含逗号、句号、感叹号
为了完成本关任务,你需要掌握:1.如何打开文件,2.如何遍历文件。 3.如何处理字符串 4.如何向列表中添加信息 5.如何对列表排序
for r in 文件对象: 可以对文件的每一行循环,r为读取的每一行文本
str.strip(字符); strip() 方法用于移除字符串头尾指定的字符或字符序列,默认为空格和换行符。 例如line.strip()可删除字符串首尾的空格和换行符。 注意:该方法只能删除开头或是结尾的字符,不能删除中间部分的字符。 示例如下:
str = "00000003210Runoob01230000000"
str.strip( '0' )为去除首尾字符 0,即3210Runoob0123
find() 方法检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,如果包含子字符串返回开始的索引值,否则返回-1。 rfind() 方法是从字符串尾部开始查找字符
示例如下:
x='1234a5678a9b'
pos=x.rfind('a')
则pos值为9
x[:pos]为字符a以前的字符串'1234a5678’
x[pos:]为字符a及以后的字符串'a9b’
列表lb的添加 lb.append(元素)
列表lb的排序 lb.sort()
list1=[3,2,1,5,6]
list1.sort()
list1
[1,2,3,5,6]
平台会对你编写的代码进行测试: 显示结果如下
雄鸡一唱天下白 少年心志当拿云 开始你的任务吧,祝你成功!
f1=open("sy8//中学诗词.txt","r",encoding='utf-8')
zj=[]
flagsub=1
import numpy as np
#代码开始
fh=[",","。","!","?",",",".","?","!"]
for line in f1:
flag=0
for i in fh:
if i in line:
flag=1
break
else:
m=line.strip()
s=m.rfind(" ")
xm=m[int(s)+1:]
if flag==0 and ("上" not in xm) and ("下" not in xm):
zj.append(xm)
a=0
if a
本关任务:编写一个使用列表求解约瑟夫环的问题
约瑟夫问题可以这样描述:n个人按1,2,3,… ,n编号,并顺序围坐一圈。开始按照1,2,3,… ,m 报数,凡报到 m 的出列。直到所有人出列为止。 下图模拟n为8m为4的出列顺序
为了完成本关任务,你需要掌握:1.约瑟夫环的算法2.列表的操作
建立一个列表lb存放n个值 遍历该列表,从1开始计数,到第m个值将其从列表删除。然后继续从1开始计数,数到第m个值将其从列表删除。 以此类推,直到列表中没有元素为止
列表lb的添加 lb.append(元素) 列表lb的删除 lb.remove(x) 删除lb中值为x的列表
根据提示,在右侧编辑器补充代码,输入人数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("输入序号"))
#代码开始
ls=[]
for i in range(1,n+1):
ls.append(i)
#while k
本关任务: 对于一个不包含重复数字的有序列表 [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"))
#代码开始
c=0
flag=1
for i in lst1:
c=n-i
i1=lst1.index(i)
if c in lst1:
c1=lst1.index(c)
print(i1,c1)
flag=0
break
if flag==1:
print("not found")
用户列表和密码列表如下所示 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 查看数据,退出系统""")
#代码开始
n=0
while True:
n=eval(input("请输入"))
if n==1:
yhm=input("请输入用户名")
mm=input("请输入密码")
if yhm in yhlb:
print("用户已经存在 无法增加")
else:
yhlb.append(yhm)
mmlb.append(mm)
print("用户已增加")
elif n==2:
yhm=input("请输入用户名")
if yhm not in yhlb:
print("用户不存在 无法删除")
else:
xh=yhlb.index(yhm)
yhlb.pop(xh)
mmlb.pop(xh)
print("用户已删除")
elif n==3:
yhm=input("请输入用户名")
if yhm not in yhlb:
print("用户不存在")
else:
xh=yhlb.index(yhm)
print("密码{}".format(mmlb[xh]))
elif n==4:
break
#代码结束
for i in range(0,len(yhlb)):
print("用户名{:6}密码{:6}".format(yhlb[i],mmlb[i]))