我想从这个列表中打印出一组5个随机响应,但每次尝试时都会收到错误消息,说int类型没有len。
我已经尝试了我能想到的一切,但我只是一个学生,不知道自己在做什么。
import random
num = random.randrange(1,6)
endings = {
1: "ing",
2: "end",
3: "axe",
4: "gex",
5: "goh",
}
#print (endings.get(num))
stu_num = int(input("how many students will there be? "))
#print(random.choice(endings))
for x in range (stu_num):
print (len(random.choice(endings)))
len(endings)
是5,因为它是一个字典,有很多条目。
CCD_ 2将生成一个介于0和字典长度之间的随机数。然后,它将尝试使用该号码访问词典。如果有结果,你会把字典里的项目拿回来的。
该项目可能是";ing";,因此该项目的长度是3(对于所有其他项目也是如此(。
但是,请注意,您的字典没有0到4之间的数字,而是有1到5之间的数字。这意味着:
- 如果使用值0访问字典,它将由于KeyError而崩溃,因为没有像
0: "abc"
这样的定义 - 项目编号5将永远不会被选中
您可能想要的:
list(endings.values())
:将值转换为索引从0到4的列表,以便可以拾取所有项- 你不想打印学生姓名的长度(3(,而是打印他们的姓名
- 此外,如果你想挑选5个学生,你不想两次挑选同一个学生。这意味着您需要将所选学生从字典或列表中删除
建议代码:
# ...
students = list(endings.values())
for x in range(stu_num):
picked = random.choice(students)
students.remove(picked)
print(picked)