python练习题:数据统计

任务描述

输入两个整数,在这两个整数组成的闭区间范围内生成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}")

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值