Python - 忽略重新启动while循环
我在我的大学的入门csci课程中编写的程序是对用户症状的小型诊断。除了一件事情之外,所有事情都应该如此:如果使程序运行的初始条件(无论用户是否发烧)为“否”或“n”,则程序将不会重新启动重新定义使while循环运行的变量。Python - 忽略重新启动while循环
取而代之的是,程序在接收到用户关于是否重新启动程序的输入而不是重新开始while循环之后继续。这会产生问题,因为程序进入下一行代码并达到未定义的变量。
这只发生在第一个if,else语句中,并且在随后的语句中没有问题。它只发生第一次 while循环变量被重新定义。在其他任何时候,它都可以工作。
即使第一个“else”重新定义“完成”,应该使while循环重新启动,它不会重新启动。但是,对于用户重新定义“完成”的每个后续时间,则重新启动的while循环。奇。缩进错误?我不知道。双星号是while循环需要重新启动的地方,但不是。无论用户输入如何,它都会继续尝试继续,并且出现错误提示“咳嗽”未定义,表示while循环未重新启动。
这里是我的代码:
#Proj2.py
finished = "y"
while finished == "y":
print()
print("Fever Diagnostic Tool")
print("---------------------")
print()
print("Please note that this program performs no true diagnostic \nactivity. No decisions should be made based upon the tool's \nanalysis. If users have a fever, they should contact their \ndoctor.")
print()
print()
FirstDiagnosis = str(input("Do you have a fever (y/n): ")).lower()
print(FirstDiagnosis)
if FirstDiagnosis == "y":
cough = ""
cough = str(input("Are you coughing (y/n): ")).lower()
print(cough)
else:
print()
print("Symptoms")
print("* None")
print()
print("Diagnosis")
print(" Insufficient information to list possibilites.")
print()
print()
**finished = str(input("Would you like another set of symptoms? ")).lower()**
print()
if cough == "y":
ShortOfBreath = ""
ShortOfBreath = str(input("Are you short of breath or wheezing or coughing up phlem (y/n): ")).lower()
print(ShortOfBreath)
这不是如何while循环工作。一旦身体任何部位的状况变得虚假,他们就不会戒烟;该条件仅在块的结尾处被评估,此时它决定是否再次循环(如果条件仍然成立)或中断(如果不成立)。
在这种情况下,最容易做的事情就是使用break
声明明确:
finished = input("Would you like another set of symptoms? ").lower()
if finished == 'y':
break
输入不是“y”时不应该中断吗? – tdelaney
我喜欢你的节目觉得需要添加免责声明;-) – donkopotamus
语义,我会说'同时完成!=“y”' – Pynchia
请在开始时编辑您的代码..完成时我假设'finished =“y”==“y”:代码的一部分,需要更多缩进然后 – Pynchia