![](/img/trans.png)
[英]Python begginer - Can someone tell me why this loop don't finish?
[英]Can someone tell me why my python loop won't work for creating a multiple choice quiz?
只是想知道如何让这个循环运行 - 我认为它与变量有关,但我不太确定。 全新的编码
def question1 ():
answer1 = input ("What is the correct answer?")
if answer1 == "B" :
right_answer1 = True
print ("That is correct!")
elif answer1 == "b" :
right_answer1 = True
print ("That is correct!")
elif answer1 == " b":
right_answer1 = True
print("That is correct!")
elif answer1 == " B":
right_answer1 = True
print("That is correct!")
else:
right_answer1 = False
print ("Please try again!")
if right_answer1 != True :
question1()
我相信你想要的代码是这样的。 仅供参考,您所指的“循环”称为recursion 。 只要输入不正确的答案,您的函数就会递归调用自身。
def question1():
answer1 = input("What is the correct answer?")
if answer1 == "B":
right_answer1 = True
print ("That is correct!")
elif answer1 == "b" :
right_answer1 = True
print ("That is correct!")
elif answer1 == " b":
right_answer1 = True
print("That is correct!")
elif answer1 == " B":
right_answer1 = True
print("That is correct!")
else:
right_answer1 = False
print ("Please try again!")
if right_answer1 != True :
question1()
question1()
def question():
answer = input ("What is the correct answer?")
if answer.upper().strip() == "B":
print("That is correct!")
return True
print ("Please try again!")
return False
while !question():
pass
我假设您使用的是 Python 2.7
在 Python 2 中,raw_input() 返回一个字符串,而 input() 尝试将输入作为 Python 表达式运行。
所以如果你尝试传递输入 b 会抛出一个错误说
NameError: 名称 'b' 未定义
这个问题有两种解决方案:
使用下面的代码片段并使用单引号或双引号传递输入。
定义问题1():
answer1 = input("What is the correct answer?") if answer1 == "B" or answer1 == " B": right_answer1 = True print ("That is correct!") elif answer1 == "b" or answer1 == " b": right_answer1 = True print ("That is correct!") else: right_answer1 = False print ("Please try again!") if right_answer1 != True : question1()
问题 1()
使用 raw_input 并且您不需要在输入周围传递引号,因为python会为您将其转换为字符串
将第 answer1 = input("正确答案是什么?") 替换为
answer1 = raw_input("正确答案是什么?")
我看到您对编程和 Python 非常陌生。 你快到了,但你犯了一些错误:
1)循环在哪里?
必须有一种for
/ while
类型的循环。 您还需要指定开始、增加和结束循环的条件。 以下是循环的语法:
for i in range(start, end, increment):
# Your set of statements
对于while循环:
while condition!=True:
# Your set of statements
2)你没有给出适当的缩进,这在 Python-3 中非常重要
因此,新程序将如下所示:
def question1 ():
right__answer1 = False
answer1 = input ("What is the correct answer?")
while right__answer1!=True:
if answer1 == "B" :
right_answer1 = True
print ("That is correct!")
break
elif answer1 == "b" :
right_answer1 = True
print ("That is correct!")
break
elif answer1 == " b":
right_answer1 = True
print("That is correct!")
break
elif answer1 == " B":
right_answer1 = True
print("That is correct!")
break
else:
right_answer1 = False
print ("Please try again!")
question1()
您实际上可能指的是递归:
def question1 ():
answer1 = input ("What is the correct answer?")
if answer1 == "B" :
right_answer1 = True
print ("That is correct!")
elif answer1 == "b" :
right_answer1 = True
print ("That is correct!")
elif answer1 == " b":
right_answer1 = True
print("That is correct!")
elif answer1 == " B":
right_answer1 = True
print("That is correct!")
else:
right_answer1 = False
print ("Please try again!")
question1()
question1()
def question1 ():
while True:
answer1 = input ("What is the correct answer?")
if (answer1.strip().lower() == 'b'):
print("That is correct!")
return # or 'break'
print("Please try again!")
question1()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.