Python每日一题 2025.3.23
一、题目
编写程序,生成1000个0~100的随机整数,并统计每个元素出现的次数.
二、分析
生成随机数在random库中,但是具体如何生成不太会。假设我们生成好了随机数,接下来需要统计每个元素出现的次数。打算用字典来统计,可以选择将0~100的数为键,然后设默认值为0,也可以一边便利一边生成,不过最后感觉最好还是要按值或者键排序。所以跟之前一次的每日一问有些类似。
三、自己源代码
import random
import pdb
random_numbers = [random.randint(0, 100) for _ in range(1000)]
#上面是生成随机数的方式,注意,左右都是闭区间
result={}
for i in random_numbers:
result[i]=result.get(i,0)+1
final=sorted(result.items(),key=lambda x:x[0])#按键排序
print(final)#随后生成对应列表输出
输出结果
上面是两次的输出结果,可以大体看看。
四、deepseek答案
import random
from collections import Counter
# 生成1000个0~100的随机整数
random_numbers = [random.randint(0, 100) for _ in range(1000)]
# 统计出现次数并按数字排序
count_result = sorted(Counter(random_numbers).items())
# 打印统计结果
print("数字\t出现次数")
print("----------------")
for num, count in count_result:
print(f"{num}\t{count}")
# 验证总数(可选)
print("\n总数验证:", sum(count for _, count in count_result))
输出结果
上面是部分展示答案。可以看到很清晰明显的。
简单分析一下代码。Counter()也是之前用过的,传入的是可迭代对象,生成的是类似字典的样式,键是数,值是出现次数。items()也是字典中的一个方法,返回的是键和值。这里应该是默认按值排序(后续确认了一下,确实是这样的,所以我源代码那里其实不用再操作后续的key了)。后面就是输出格式了,\t 是一个转义字符,在字符串中表示 水平制表符(Tab)。它会在字符串中插入一个水平空白,通常用于对齐文本或格式化输出。
五、源代码与ai分析
结合来看,不论是实现方法还是输出格式,ai给的相对更好一些,其中也用到了我们之前说到过的Counter统计方法,可以多多学习。