2014-11-08 64 views
0

while循环时“没有”第一次进入了“你想继续”的问题正确地停止。当在“是”之后或在几个“是”之后输入“否”时,则用户必须回答“否”,因为在其之前有很多“是”的条目:例如“是”,“是”,“否”在第一个“否”答案后会产生两个“你愿意继续”的问题。Python中,While循环运行不正常

我刚开始学习Python,所以任何建议将是有益的。

谢谢。

def testing3(): 
    def Grade(score): 
     if score >= 90: 
      letter = "A" 
     elif score >= 80: 
      letter = "B" 
     elif score >= 70: 
      letter = "C" 
     elif score >= 60: 
      letter = "D" 
     else: 
      letter = "F" 
     print(letter) 

    def main(): 
     x = input("Enter Numerical Grade: ") 
     numGrade = int(x) 
     Grade(numGrade) 

    main() 

    def main2(): 
     while True: 
      test = input("Would you like to continue?: ") 
      if test == 'Yes': 
       testing3() 
      else: 
       print("Done") 
       break 

    main2() 

testing3() 
+0

你能检查你的缩进吗?我相信'main2'应该比它低一级。 – 2014-11-08 03:55:14

回答

0

你testing3调用将调用内MAIN2闪避,但MAIN2调用testing3高清让你乒乓两者之间。

要得到这个你应该看看你的堆栈帧感,你应该看到testing3随后testing2随后testing3等,为你怎么过很多次进入是一个框架。

无论你的意思(我不认为你这样做),你创建了一个递归函数。所以,你有没有多次进入的原因是因为你放松了(突然离开堆栈帧)

+0

感谢您的回答。 我回去了def def3()之外的def main2(),这立即纠正了我的问题。 – 2014-11-08 04:02:31

0

正确使用while循环应该是这样的:

finish = False 
while not finish: 
    # do your stuff here 
    finish = evaluateLoopFinish() 

这里,饰面是信号标志,你必须在每回合结束时评估。第一次被设置为False,所以不是False == True,因此进入循环。

另一个秘诀:只使用一个主这样

def main(args): 
    # do your stuff here 

if __name__=="__main__": 
    main() 

每个Python脚本具有保持模块的名字,除了为其赋予的Python脚本中特殊变量被执行,其接收特殊值主要