为何Python的random.randint在for循环中没有重新生成新随机数
问题原因分析
- 你当前贴出的这段代码本身逻辑没问题,确实会在每次循环迭代时生成新的随机a、b。首先可以确定你实际运行的代码和你贴出的代码不是同一份:你贴的代码里
input函数返回的是字符串类型,和整数类型的a*b做相等判断永远返回False,不可能出现你运行结果里的Well done提示。 - 如果你实际运行时每次循环a、b都不变,最常见的是两个错误:
- 你把
a = random.randint(1,12)、b = random.randint(1,12)两行写在了for循环外面,只会在循环启动前生成一次随机值,后续所有循环都复用同一个结果 - 你在代码中设置了固定的随机数种子,且每次调用
randint前都重新设置了相同的种子,会导致每次生成的随机值完全一致
- 你把
- 你贴出的代码本身还存在逻辑缺陷:需要把输入内容转为整数后再和乘法结果比较,修改方式为将
answer = input(question)改为answer = int(input(question)),否则就算用户输入了正确的数字,也会被判定为错误。
内容的提问来源于stack exchange,提问作者Will Simpson
相关产品推荐
相关产品推荐

