Python打印5个随机3字母字符串时报错int类型无len方法的问题咨询
报错核心原因
你遇到的「int类型不存在len方法」报错,根源出在最后一行的随机选择逻辑上:
random.choice()的功能是从传入的可索引序列里随机选1个元素返回,你直接把字典endings传入该函数时,函数实际从字典里提取的可选元素是所有的键(也就是1、2、3、4、5这类整数),最终返回值是整数类型的键- 你后续直接对这个返回的整数执行
len()操作,因为整数本身没有长度属性,自然会触发类型报错
可运行的修正方案
要实现从预设字典里随机选取3字母字符串的目标,只需要把字典里存储的所有字符串值提取成独立列表,再传给random.choice()即可,修正后的完整代码如下:
import random endings = { 1: "ing", 2: "end", 3: "axe", 4: "gex", 5: "goh", } stu_num = int(input("how many students will there be? ")) for x in range(stu_num): # 提取字典中所有3字母字符串组成列表,随机选取条目 random_str = random.choice(list(endings.values())) # 直接打印选中的字符串即可,所有预设字符串固定为3个字符 print(random_str)
优化建议
- 对新手来说,完全可以去掉冗余的字典结构,直接把3字母字符串存在列表里,例如写为
endings = ["ing", "end", "axe", "gex", "goh"],后续随机选择的代码无需改动,逻辑更直观不易出错 - 原代码中单独写的
num = random.randrange(1,6)属于未投入使用的冗余逻辑,可以直接删除
内容的提问来源于stack exchange,提问作者James Barras
相关产品推荐
相关产品推荐

