Python程序设计 列表(二)

您所在的位置:网站首页 12的倍数的数一定是合数对吗 Python程序设计 列表(二)

Python程序设计 列表(二)

2024-06-20 18:50| 来源: 网络整理| 查看: 265

实验八 列表 1. 欧拉筛法求素数

编写一个欧拉筛法求素数的小程序。

欧拉筛法

欧拉筛法其运用的原理是质数的倍数一定不是质数。因此将质数的倍数直接标记成合数,以达到筛选质数的目的。 例如,求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=eval(input()) #代码开始 l = [] list1 = [i for i in range(n+1)] for j in range(2,n+1): if list1[j]: l.append(j) for i in l: if i * j > n: break list1[i*j] = False if i * j == 0: break #代码结束 print(l) 2. 统计文档中诗人列表

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

打开文件

=open(,) 打开一个文件,并创建一个file类对象 文件名在当前文件夹下,直接输入文字的名字 在其他路径下,则是包含完整路径的名字 'r' 只读模式,如果文件不存在,返回异常FileNotFoundError,默认值

遍历文件

for r in 文件对象: 可以对文件的每一行循环,r为读取的每一行文本

字符串的移除

str.strip(字符); strip() 方法用于移除字符串头尾指定的字符或字符序列,默认为空格和换行符。 例如line.strip()可删除字符串首尾的空格和换行符。 注意:该方法只能删除开头或是结尾的字符,不能删除中间部分的字符。

字符串的截取

find() 方法检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,如果包含子字符串返回开始的索引值,否则返回-1。 rfind() 方法是从字符串尾部开始查找字符

列表的处理

列表lb的添加 lb.append(元素)

列表lb的排序 lb.sort()

f1=open("sy8//中学诗词.txt","r",encoding='utf-8') zj=[] #代码开始 for i in f1.readlines(): i = i.strip() if " " in i and "," not in i and "。" not in i and i.find("!") == -1: index = i.rfind(" ") n = i[index+1:] if n not in zj: zj.append(n) zj.sort() #代码结束 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的出列顺序

约瑟夫环的算法

建立一个列表lb存放n个值 遍历该列表,从1开始计数,到第m个值将其从列表删除。然后继续从1开始计数,数到第m个值将其从列表删除。 以此类推,直到列表中没有元素为止

列表的操作

列表lb的添加 lb.append(元素) 列表lb的删除 lb.remove(x) 删除lb中值为x的列表

n=eval(input("输入人数")) k=eval(input("输入序号")) #代码开始 lb = [i for i in range(1, n+1)] s = 0 for i in range(1, n+1): s = (s+k-1)%len(lb) x = lb.pop(s) print(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”。

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")) #代码开始 s = 0 for i in range(len(lst1)): x = lst1[i] y = n - x if y in lst1: print(i ,lst1.index(y)) s = 1 break if s == 0: print("not found") #代码结束 5. 用户数据的增加、删除、查询

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

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

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

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

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

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


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3