Python,而循环不能正常运行

时间:2014-11-08 03:48:05

标签: python while-loop

当" no"时,while循环正确停止首先输入"您是否愿意继续"题。当" no"在"是"之后输入或经过几次"是"条目,然后用户必须回答"否"无论多少"是"条目来到它之前:例如"是","是","不"将产生两个"你想继续"第一个问题之后的问题" no"回答。

我刚开始学习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()

2 个答案:

答案 0 :(得分:0)

您的testing3调用调用内部main2 def,但是main2调用了测试3 def,因此您在两者之间进行乒乓。

要了解这一点,你应该看看你的堆栈框架,你应该看到一个框架用于测试3,然后是testing2,然后是testing3等,你输入的次数是多少次。

你是否意味着(我认为你没有)你创建了一个递归函数。因此,您不必多次输入的原因是您放松(从堆栈中弹出帧)

答案 1 :(得分: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的脚本的模块名称,但除外,该脚本接收特殊值<强>主