简单的是或否循环Python3

时间:2018-05-24 12:44:33

标签: python

所以我对python很新,但在创建基本的Yes或No输入时遇到了一些麻烦。我希望能够做一些事情,如果用户说是,如果用户说不做则做其他事情,并重复问题,如果用户输入的内容不是或不是。这是我的代码:

def yes_or_no():
    YesNo = input("Yes or No?")
    YesNo = YesNo.lower()
    if(YesNo == "yes"):
        return 1
    elif(YesNo == "no"):
        return 0
    else:
        return yes_or_no()

yes_or_no()

if(yes_or_no() == 1):
    print("You said yeah!")
elif(yes_or_no() == 0):
    print("You said nah!")

从理论上讲,这应该可行,但我一直都有问题。每当我第一次输入是或否时,它总是重复这个问题。它第二次工作正常。请让我知道我做错了什么。谢谢!

3 个答案:

答案 0 :(得分:4)

您首先调用yes_or_no,它会输出一个值,但您将其丢弃并再次调用该函数,而不是测试第一次调用的输出。

尝试将输出存储在变量中。

# Store the output in a variable
answer = yes_or_no()

# Conditional on the stored value
if answer == 1:
    print("You said yeah!")

else:
    print("You said nah!")

图片的标题说明

对变量使用大写名称被认为是不好的做法,应该为类保留。

此外,使用while循环可以更好地实现用户提示循环,以避免每次用户输入错误输入时向您的调用堆栈添加一个帧。

以下是您的功能的改进版本。

def yes_or_no():
    while True:
        answer =  input("Yes or No?").lower()

        if answer == "yes":
            return 1

        elif answer == "no":
            return 0

答案 1 :(得分:0)

您可以使用breakcontinue这样的语句:

def yes_or_no():
    YesNo = input("Yes or No?")
    YesNo = YesNo.lower()
    if(YesNo == "yes"):
        return 1
    elif(YesNo == "no"):
        return 0
    else:
        return -1

while(True):
    inp = yes_or_no()
    if(inp == -1):
        continue
    elif(inp == 1):
        print("You said yeah!")
    elif(inp == 0):
        print("You said nah!")
    break

答案 2 :(得分:0)

我们只是使用while循环

来完成
while True:
   a = input("Yes or No : ").lower()
   if a == "yes":
       print("You said yeah!")
       break
   elif a == "no":
       print("You said nah!")
       break