如何通过检查结果是否是列表中的元素来使用 while 函数

How to use while function by checking whether the result is an element from a list or not

提问人:Raka Wiratama 提问时间:6/11/2023 更新时间:6/11/2023 访问量:26

问:

我有这个代码

import random

list = [1,2,3,4,5]
random_number = 0

while any(random_number == list):
     random_number = random.randint(1,10)
     print(random_number)

但是当我尝试执行它时,它显示了以下错误

TypeError:“bool”对象不可迭代

只要生成的随机数是列表的一个元素,我就想循环函数。你能帮我修复那个代码吗?

python list while-loop

评论

1赞 Tim Roberts 6/11/2023
这不是工作方式。你想要,但要做到这一点,你必须设置为列表中的东西 - 0不在列表中。anywhile random_number in list:random_number
0赞 Raka Wiratama 6/11/2023
我明白了,更改了功能如下,该功能正在按预期工作import randomlist = [1,2,3,4,5]random_number = 1while random_number in list:random_number = random.randint(1,10)print(random_number)

答:

0赞 Mureinik 6/11/2023 #1

这里有几个问题。

首先,覆盖内置的 .使用其他名称(如 )应该可以帮助您避免这种情况。listlst

其次,这不是工作方式。 如果传递给它的可迭代对象的任何元素是真值,则返回。如果你必须使用它,你会想要类似的东西,但老实说,你最好只使用内置运算符。anyanyTrueany(x == random_number for x in lst)in

最后,的初始值是 ,它不在列表中,因此永远不会输入循环。相反,您应该将其初始化为列表中的某个值。random_number0

把这些放在一起,你会得到类似的东西:

import random

lst = [1, 2, 3, 4, 5]
random_number = lst[0]

while random_number in lst:
     random_number = random.randint(1, 10)
     print(random_number)
0赞 MrE 6/11/2023 #2

此处的代码存在一些问题:

首先,是 Python 关键字(它是类型),因此请避免使用此名称。listlist

然后,在 Python 中,要检查元素是否在列表中,您应该使用关键字。in

第三,如果你正在检查数字是否在列表中,那么你的初始数字应该在列表中,否则它甚至在开始之前就退出了循环。


import random

mylist = [1,2,3,4,5]
random_number = 1

while random_number in mylist:
    random_number = random.randint(1,10)
    print(random_number)