任务描述
输入两个整数,在这两个整数组成的闭区间范围内生成100个随机整数,并统计出现数据的次数,出现0次的数字不输出(而不是输出0)。为满足评测需要,程序必须使用seed函数将随机种子设为10,并使用randint函数生成随机数。
输入格式
一行当中输入两个整数,以空格间隔。题目保证两个整数从小到大
输出格式
按照生成随机数从小到大的顺序,每行输出一个生成的整数以及其出现的次数,以空格间隔。
示例 1
输入: 3 5 输出: 3 36 4 39 5 25
写了两种
第一种主要是列表,运用了一下set不可重复的特性
import random
random.seed(10)
a,b=map(int,input().split(" "))
ls=[random.randint(a,b) for i in range(100)]
set_ls=list(set(ls))
for i in sorted(set_ls):
print(i,end=" ")
print(ls.count(i))
(在使用用列表的内置方法sort()函数对set_ls进行排序时,返回了一个空,逐步排查检验,我猜测原因是set集合是一个不可变对象(set是可变类型,但set后的对象是不可变对象,对set进行修改时在一块新的地址进行操作),将列表set后创建出的集合再转化为list不会重新创建一个新的地址来存放,而是直接使用原来地址的数据当作列表操作,保留了set对象不可变的性质(仅是推测))
第二种是用的字典
import random
random.seed(10)
a,b=map(int,input().split(" "))
ls=[random.randint(a,b) for i in range(100)]
dic={}
for i in ls:
dic[i]=dic.get(i,0)+1 #如果dic[i]不存在,get(i,0)返回0
for x,y in sorted(dic.items(),key=lambda tup:tup[0]):
print(f"{x} {y}")