Python每日一题(3)

一、题目

  编写程序,生成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统计方法,可以多多学习。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值