Python实验之——集合与字典

刚开始我没仔细看,写的有点着急,后来发现这章只要把实验PPT给的例子看懂就差不多了。。。

  1. 随机产生 2 组各个数字的列表,每组 10 个数字,如下要求:每个数字取值范围 [10,20],统计 20 个数字中,一共有多少个不同的数字?2 组中,不重复的数字有几个?分别是什么?2 组中,重复的数字有几个?分别是什么?
import random
x=[random.randint(10,20) for i in range(10)]
y=[random.randint(10,20) for i in range(10)]
z=list(x+y)
z.sort()
count=1
sum=0
m=[]
n=[]
for i in range(0,19):#统计z中不同的数字
    if z[i]!=z[i+1]:
        count+=1


y.sort()#这里题目有点歧义,我理解为统计y中的数字
for j in range(0,9):
    if y[j]==y[j+1] and y[j] not in m:#重复数字统计
           sum+=1
           m.append(y[j])

n=list(set(y)-set(m))

print(x)
print(y)
print(z)
print(count)
print("2组中重复数字个数以及内容:",sum,m)
print("2组中不重复数字个数以及内容:", len(n),n )


测试:
[15, 12, 19, 14, 17, 14, 17, 17, 13, 20]
[10, 12, 12, 12, 15, 16, 17, 18, 18, 19]
[10, 12, 12, 12, 12, 13, 14, 14, 15, 15, 16, 17, 17, 17, 17, 18, 18, 19, 19, 20]
10
2组中重复数字个数以及内容: 2 [12, 18]
2组中不重复数字个数以及内容: 5 [10, 15, 16, 17, 19]

进程已结束,退出代码0

2.数字重复统计:随机生成 100 个整数,数字的范围是 [-1000, 1000],升序输出所有不同的数字及其每个数字重复的次数。

import random
x=[random.randint(-1000,1000) for i in range(100)]
x.sort()
sort_x={}
count_x=[]
sort_x1=[]
for i in range(len(x)):
    count_x.append(x.count(x[i]))
    sort_x[x[i]] = count_x[i]

for k, v in sort_x.items():
    sort_x1.append((k, v))
print(sort_x1)

3.字符串重复统计:字符表’abcdefghijklmnopqrstuvwxyz’,随机挑选 2 个字母组成字符串,共挑选 100个,降序输出所有不同的字符串及重复的次数。

import random
x=[]
for i in range(100):
   slice = ''.join(random.sample('abcdefghijklmnopqrstuvwxyz'+'abcdefghijklmnopqrstuvwxyz', 2))  # 从list中随机获取2个元素,作为一个片断返回
   print(slice,end=' ')
   x.append(slice)
print('\n')
print(x)
x=sorted(x,reverse=True)#降序输出
print(x)

count_list=[]#统计重复次数以及输出
sort_list={}
sort_list1=[]
for i in range(len(x)):
    count_list.append(x.count(x[i]))
    sort_list[x[i]]=count_list[i]
for k,v in sort_list.items():
    sort_list1.append((k, v))
print('\n')
print(sort_list1)

4.实现埃拉托色尼筛选法:古希腊时发明的一个用来计算素数的函数。选择一个整数 n,该函数计算小于n 的所有素数。首先把所有从 1 到 n 的数字插入一个集合,然后删除 2 的所有倍数(除 2 之外)也就是 4、6、8、10、12……。再删除 3 的所有倍数,也就是 6、9、12、15……直到 √n。剩余的数字都是素数。

import copy
def sushu(n):
 x=set()
 for i in range(1,n+1):#插入集合
      x.add(i)
 print(x)
 n=int(n**(0.5))
 x_1 = copy.deepcopy(x)

 for i in  x:#删除从2-√n的倍数
     x_1=copy.deepcopy(x_1)
     for j in range(2,n+1):
           if  i % j==0 and i!=j:
             x_1.discard(i)

 print(x_1)

sushu(25)





结果:
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25}
{1, 2, 3, 5, 7, 11, 13, 17, 19, 23}

进程已结束,退出代码0

1不是素数,但是题目没有去掉,暂时就这样写。好像到这里实验就木有啦,同学们白白!!!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值