Python 玩循环
我正试图弄清楚如何在Python中使用循环,我需要一些帮助。我写的代码只是我在玩的东西。这不是任务或类似的事情 我想弄明白的是,如何循环程序,让它让用户输入一些东西来重新开始提问。这就是我到目前为止所做的:Python 玩循环,python,loops,Python,Loops,我正试图弄清楚如何在Python中使用循环,我需要一些帮助。我写的代码只是我在玩的东西。这不是任务或类似的事情 我想弄明白的是,如何循环程序,让它让用户输入一些东西来重新开始提问。这就是我到目前为止所做的: def monkeys(): apes = "This is not a monkey!" monkey_yes = "This is a monkey!" is_it_a_monkey = apes + monkey_yes monk
def monkeys():
apes = "This is not a monkey!"
monkey_yes = "This is a monkey!"
is_it_a_monkey = apes + monkey_yes
monkey_question = input("Type in Gorilla, Chimp or Macaque and make sure they're capitalized: ")
for question in is_it_a_monkey:
if monkey_question == 'Gorilla' or monkey_question == "Chimp":
print(apes)
continue
else:
print(monkey_yes)
break
def main():
while True:
if again not in {"y","n"}:
print("Please enter valid input")
elif again == "n":
return "Good bye!"
elif again == "y":
return monkeys()
monkeys()
我正试图让main()
来做大部分的工作,因为这是我老师在我们的作业中想要的。main()
下的所有内容都是我复制的,以查看是否有效,但它只返回以下内容:
Type in Gorilla, Chimp or Macaque and make sure they're capitalized: Gorilla
This is not a monkey!
This is not a monkey!
This is not a monkey!
This is not a monkey!
它比4行长得多,但这不是我要找的。首先,你可以调用
monkeys()
,但是你应该调用main()
,因为这就是循环所在。其次,return
会导致函数停止执行,并在调用它的地方继续执行。要继续循环,请删除main()
中的return
s
要更好地了解代码的工作方式,请阅读有关调试的内容。它显示了一些提示,让您可以一步一步地了解代码在做什么。您应该改用此代码,它(正如许多人所指出的,包括上面的@code peedient)按您的意愿调用函数
main()
@《代码学徒》的答案还包括了一个很好的解释,解释了为什么这样做有效。此代码几乎与上面的代码完全相同;只有最后一行不同:
def monkeys():
apes = "This is not a monkey!"
monkey_yes = "This is a monkey!"
is_it_a_monkey = apes + monkey_yes
monkey_question = input("Type in Gorilla, Chimp or Macaque and make sure they're capitalized: ")
for question in is_it_a_monkey:
if monkey_question == 'Gorilla' or monkey_question == "Chimp":
print(apes)
continue
else:
print(monkey_yes)
break
def main():
while True:
if again not in {"y","n"}:
print("Please enter valid input")
elif again == "n":
return "Good bye!"
elif again == "y":
return monkeys()
main()
我提交此答案的原因是要指出,尽管调用了
main()
,您仍将立即遇到另一个问题。您在main()
中再次引用变量,,但从一开始就不会再次为赋值(如果运行此代码,您可能会看到一个错误,其形式为“NameError:未定义全局名称”“再次”。)。解决下一个错误超出了您的问题范围;如果您愿意,有很多方法可以重新编写此代码以适应,
。我发现这里有几个问题
首先,您要连接两个字符串
apes = "This is not a monkey!"
monkey_yes = "This is a monkey!"
is_it_a_monkey = apes + monkey_yes
当进入for循环时,解释器将查看连接字符串的每个字符。这就是为什么您要输出38行“这不是猴子!”对于您要做的事情,您不需要For循环。请尝试以下方法:
def monkeys():
apes = "This is not a monkey!"
monkey_yes = "This is a monkey!"
monkey_question = input("Type in Gorilla, Chimp or Macaque and make sure they're capitalized: ")
if monkey_question == 'Gorilla' or monkey_question == "Chimp":
print(apes)
else:
print(monkey_yes)
我看到的下一个问题是根本不调用main函数。调用main()而不是在代码底部调用moneys()
下一个问题是使用“while True:”。如果要使用布尔值作为while条件,请确保在代码中加入逻辑以更改该条件。将其更改为“False”应该是退出main语句的内容,而不是返回语句。您的main()最好是这样开始:
def main():
keep_going = True
while keep_going:
monkeys()
monkeys()
again = input("Would you like to try again? (y/n) ")
注意,应该首先调用monkeys()函数,否则程序启动时没有人知道输入什么。您还需要代码询问他们是否希望继续运行该程序。在调用monkey()之后,执行以下操作:
def main():
keep_going = True
while keep_going:
monkeys()
monkeys()
again = input("Would you like to try again? (y/n) ")
下一个问题是return语句的使用。而不是这样做:
elif again == "n":
return "Good bye!"
做这个
elif again == "n":
print("Good bye!")
keep_going = False
最后,你有“如果不是在{“y”,“n”}:”。您必须为“再次”赋值,否则会出现更多错误。如果你使用上面的例子,它应该满足你的需要
继续努力,不要失去希望。您正在接近了解它。欢迎使用SO!我看不到这里调用了main
。感谢您使您的回答易于理解。这确实消除了我对循环的很多困惑。不客气。如果这回答了你的问题,请接受它作为你的答案。祝你好运,继续编码!