2015-10-05 78 views
0

我在我的大学的入门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) 
+0

我喜欢你的节目觉得需要添加免责声明;-) – donkopotamus

+1

语义,我会说'同时完成!=“y”' – Pynchia

+1

请在开始时编辑您的代码..完成时我假设'finished =“y”==“y”:代码的一部分,需要更多缩进然后 – Pynchia

回答

1

这不是如何while循环工作。一旦身体任何部位的状况变得虚假,他们就不会戒烟;该条件仅在块的结尾处被评估,此时它决定是否再次循环(如果条件仍然成立)或中断(如果不成立)。

在这种情况下,最容易做的事情就是使用break声明明确:

finished = input("Would you like another set of symptoms? ").lower() 
if finished == 'y': 
    break 
+1

输入不是“y”时不应该中断吗? – tdelaney