你好,如果已经有人问过了,我很抱歉。 我正在尝试编写一个简单的彩票模拟程序(用于学习) 不知何故,我的if语句不会触发,因此无论用户输入什么,程序都使用第二个if语句,而不是第一个if语句(您赢了)
非常感谢您的快速回答!没想到这么多人这么快就能帮上忙。我们找到了解决办法
代码如下:
import random
lottonumbers = []
lottonumbers = list(range(1,51))
lottonumbersro = random.sample(lottonumbers, 6) #right ones
print(lottonumbersro)
active = True
while active:
userinput = input('your numbers')
if userinput == lottonumbersro:
print('you won', lottonumbersro)
active = False
break
if userinput != lottonumbersro:
print('no luck today', lottonumbersro)
active = False
break
print('why isn\'t this stuff working')
您必须将输入从
str
转换为int
。此外lottonumbersro
是一个列表,因此与userinput
的相等性检查将产生False
。因此,您还需要检查输入是否包含在lottonumbersro
中,而不是检查是否相等其他问题是f.i.如果变量
active
为False
,则while循环结束,而在if语句中将变量aktiv
设置为false,或者将active
和break
设置为循环。只需要一个您还可以简化代码:
我想你不明白你到底在比较什么。我将假设您正在输入一个由6个数字组成的字符串?因此,现在,您可以:
这是因为您拥有的}
userinput
变量包含一个str
类型,并且您正在将其与list
类型进行比较。我们要做的是把这个输入str
变成list
{您可以尝试在while循环中添加类似的内容:
注意列表理解如何用于将
str
转换为int
中的list
。现在,当你尝试比较时,它应该可以很好地工作请注意,只有当输入字符串是仅由空格分隔的数字时,此解决方案才有效。如果要考虑逗号之类的内容,则需要更改逻辑。您可以通过修改行来执行此操作:
与其他人提到的问题相同,但解决方案不同。您可以将乐透号码转换为
str
,然后对照该input
检查。这需要输入某种格式(# # # # # #
),但检查用户输入是否与6个数字完全匹配相关问题 更多 >
编程相关推荐