python列表与元组、字典与集合的应用上机报告
一、实验目的和要求
目的:
(1)掌握累加求和问题的算法。 (2)掌握根据整数的一些性质求解数字问题的算法。 (3)掌握求解一元方程的迭代算法。 (4)掌握序列的通用的操作方法。 (5)掌握列表的专用操作方法。 (6)理解元组与列表的区别。
二、 实验数据记录、处理及结果分析
① 写出程序的运行结果。 ② 筛选法求[2,n]范围内全部素数的基本思路是:在2~n中划去2的倍数(不包括2),再划去3的倍数(不包括3),由于4已被划去,再找5的倍数,……,直到划去不超过n的倍数,剩下的数都是素数。下面是用筛选法求[2,n]范围内的全部素数的程序,请补充程序。
from math import * n=int(input("请输入n:")) m=int(sqrt(n)) p=[i for i in range(n+1)] for i in range(2,m+1): if p[i]: for j in range(2*i,n+1, ① ): #去掉i的倍数 p[j]=0 for i in range(2,n+1): #输出全部素数 if ② : print(p[i])
补充程序为:①i,②p[i]
③ 生成包含20个随机整数的元组,将前10个数按升序排列,后10个数按降序排列。 ④ 写出程序的运行结果。
d={ Jack:jack@mail.com,Tom:Tom@mail.com} d[Jim]=Jim@sin.com del d[Tom] s=list(d.keys()) s=sorted(s) print(s)
⑤ 写出程序的运行结果。
numbers={ } numbers[(1,2,3)]=1 numbers[(2,1)]=2 numbers[(1,2)]=3 sum=0 for k in numbers: sum+=numbers[k] print(len(numbers),sum,numbers)
⑥ 写出程序的运行结果。
a=set(ababcdabca) x={ x for x in a if x not in ab} print(a-x) print(a|x) print(a^x) print(a&x)
⑦ 从键盘输入整数x,判断它是否集合a,b,c的元素,若是分别输出1,2,3,若都不是输出4,要求集合a从键盘输入。请补充程序。
x=int(input()) a= ① for i in range(5): a. ② (int(input())) b={ 12,43,56,2} c={ 3,2,67} if x in a: y=1 elif x in b: y=2 elif x in c: y=3 else: y=4 print(y=,y)
⑧ 写出下列程序的运行结果。
def foo(num): for j in range(2,num//2+1): if num%j==0: return False else: return True def main(): n,c=8,0 for i in range(2,n+1): if foo(i): c+=i print(c) if __name__==__main__: main()
⑨ 写出下列程序的运行结果。
def foo(list,num): if num==1: list.append(0) elif num==2: foo(list,1) list.append(1) elif num>2: foo(list,num-1) list.append(list[-1]+list[-2]) mylist=[] foo(mylist,10) print(mylist)
三、讨论、心得
第③题报错: 最初认为是randint属于math函数,运行之后报错: 最后查找资料知道:python生成完全随机的整数,用numpy中的random.randint