我正在制作简单的摇滚,纸张,剪刀游戏。正如您在代码片段中看到的那样,程序会询问用户是否希望在3或5中发挥最佳效果。
如果输入为'five', '5'
或'cinco'
,则执行函数best_out_of_five()
(现在将'5555555'
打印到控制台)。
同样,输入'three', '3',
或'tres'
会打印'3333333'
我的问题是,无论读取什么输入,它都只执行best_out_of_five()
功能(即使输入是'三')。我认为if,elif和其他将是我代码中最简单的部分,因为我之前做了很多次,但我必须遗漏一些我无法注意到的东西。
import time
def best_out_of_three():
print('333333333')
def best_out_of_five():
print('555555555')
name = input("Hi, what's your name?\n")
print('Alright %s, lets play a quick game of Rock, Paper,'
'Scissors. Do you want to play best out of 3 or 5?' % name)
game_type = input().lower()
if game_type in ['five', '5', 'cinco']:
best_out_of_five()
elif game_type in ['three', '3', 'tres']:
best_out_of_three()
else:
print("That is not a valid answer. Try again later.")
time.sleep(5)
exit()
答案 0 :(得分:1)
在编辑中包含此内容,但您的if检查应检查所有选项。快速完成此操作的一种方法是使用列表:
if game_type in ['five', '5', 'cinco']:
best_out_of_five()
elif game_type in ['three', '3', 'tres']:
best_out_of_three()
如果您的输入在列表中(对列表中的所有值进行线性检查),则它将返回true。
答案 1 :(得分:0)
条件不正确。 ' 5'只是一个字符串,当用作条件时,它将被评估为真,而字符串''将是假的。因此,你基本上拥有的是
game_type == "five" or true or true:
这将永远是真的。尝试
game_type == "five" or game_type == "5" or game_type == "cinco":
答案 2 :(得分:0)
这是一个常见的错误。你需要的是
if game_type == "five" or game_type == '5' or game_type == 'cinco':
或对布尔表达式进行操作,不会在 == 之间分发。为了过度简化评估,我只想说大多数表达式都评估为 True ;有一些例外,例如 False,0,None 。
特别是'5'与 True 相遇。当你说
如果game_type ==“five”或“5”
此必须 True 。