如何修复while循环判断随机数是否在列表中的TypeError错误
修复Python随机数循环代码的TypeError问题
错误原因
你代码中的any(random_number == list)写法完全错误:random_number == list会返回一个布尔值(比如初始的0 == [1,2,3,4,5]结果是False),而any()函数要求传入可迭代对象(比如列表、生成器),因此触发TypeError: 'bool' object is not iterable。
修复后的代码
首先不要用list作为变量名(这会覆盖Python内置的list类型),然后直接用成员运算符in判断随机数是否在目标列表中,这才是符合需求的写法:
import random target_numbers = [1, 2, 3, 4, 5] # 先初始化一个随机数,避免初始值0不在列表里导致循环直接跳过 random_number = random.randint(1, 10) while random_number in target_numbers: print(random_number) # 生成新的随机数,用于下一次循环判断 random_number = random.randint(1, 10)
逻辑说明
- 循环条件
random_number in target_numbers直接判断当前随机数是否属于目标列表,完全匹配你“只要生成的随机数是列表中的元素就持续循环”的需求 - 先初始化随机数而非用0,避免程序一开始就因为0不在列表里直接退出循环
- 循环内先打印当前符合条件的随机数,再生成新的随机数,直到生成的数不在列表中时终止循环
内容的提问来源于stack exchange,提问作者Raka Wiratama
相关产品推荐
相关产品推荐

