if-else语句缺少返回值

时间:2019-09-09 07:41:10

标签: python if-statement jupyter-notebook

您好,我正在尝试检查“剪刀石头布”游戏的输入。 如果输入有效,则Check函数应该以小写形式返回输入。 否则将采用其他新输入,并调用相同的检查功能。 如果输入为(R,P,S,r,p,s),则代码工作正常

如果第一个输入无效,则采用新输入并检查直到提供有效输入为止。但是,如果第一个输入错误,该函数将返回None。

返回之前的简单检查(打印语句)表明已正确获取该值。

def check(x):
    x=str.lower(x)
    valid_input=['r','p','s']
    print("Input value: "+str(x)) #simple check before if-else
    if x in valid_input:
        return x                 #valid input, return x
    else:
        print("Wrong Input!!!")  
        x=input("Enter r/p/s:")  #taking new input
        check(x)                 #checking if the new input is valid
x=input("Enter choice: ")       #Input value
x=check(x)                      #Call check fucntion 
print(x)

输入选择:A 输出:

输入值:a

输入错误!!!

输入r / p / s:s

输入值:s

没有

我输入无效的A时的解决方案如上所述。 该函数正在接受新输入,并且在return语句之前的示例检查中还显示新值(输入值:s)

1 个答案:

答案 0 :(得分:0)

您需要从递归中返回值

def check(x):
    x=str.lower(x)
    valid_input=['r','p','s']
    print("Input value: "+str(x)) #simple check before if-else
    if x in valid_input:
        return x                 #valid input, return x
    else:
        print("Wrong Input!!!")  
        x=input("Enter r/p/s:")  #taking new input
    ->  return check(x)          #checking if the new input is valid
x=input("Enter choice: ")       #Input value
x=check(x)                      #Call check fucntion 
print(x)