所以我对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!")
从理论上讲,这应该可行,但我一直都有问题。每当我第一次输入是或否时,它总是重复这个问题。它第二次工作正常。请让我知道我做错了什么。谢谢!
答案 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)
您可以使用break
和continue
这样的语句:
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