if-elif循环将无法运行

时间:2019-08-19 04:12:58

标签: python if-statement

我是新手,正在尝试进行简单的if-elif循环。它可以在代码的其他部分工作,但是此循环的作用就像没有用户输入。它甚至不会抛出错误代码,它只会运行第一个if-body,然后跳过elif。

我尝试使用if-else,但是效果相同。 我也尝试过包括代码而不是调用函数,没有区别。 这是我第一个发布的问题,因此请随时提出建议,以帮助他人更好地理解我。

#run loop for reroll

reroll = input("Reroll? Y  or N:")

if reroll == "N" or "n":
    Do_Not_Reroll()
elif reroll == "Y" or "y":
    Reroll_user

3 个答案:

答案 0 :(得分:3)

if reroll == "N" or "n":时,实际上是在执行语句
(if reroll == "N") or ("n")。由于字符串在Python中是真实的,因此该等式的第二部分始终被认为是正确的。因此,表达式的前半部分将被忽略。

要纠正此问题,您需要再次指定变量:

if reroll == "Y" or reroll == "y":

除此之外,请确保Reroll_userReroll_user()(假设它是一个函数)。

答案 1 :(得分:1)

尝试一下:

reroll = input("Reroll? Y  or N:")

if reroll == "N" or reroll == "n":
    # do some thing
elif reroll == "Y" or reroll == "y":
    #do some thing

您也可以这样:

if reroll in("N","n"):
    #do some thing
elif reroll in("Y","y"):
    #do some thing

答案 2 :(得分:1)

微调您当前的代码以执行您要执行的操作:

替代项1:

reroll = input("Reroll? Y  or N:")

if reroll in ("N","n"):
    Do_Not_Reroll()
elif reroll in ("Y","y"):
    Reroll_user

替代2:

reroll = input("Reroll? Y  or N:")

if reroll == "N" or reroll == "n":
    Do_Not_Reroll()
elif reroll == "Y" or reroll == "y":
    Reroll_user

替代3:

reroll = input("Reroll? Y  or N:")

if reroll.lower() == "n":
    Do_Not_Reroll()
elif reroll.lower() == "y":
    Reroll_user