从子功能中中断包含“ while True”和“ return”的主功能

时间:2018-10-12 10:17:58

标签: python main

我想从控制程序功能的主要功能中运行Python程序功能

while True:

我被认为是个好习惯。我以为程序函数中的return调用会让我失望,但是我陷入了无限循环。键入“ n”应该会打破循环-我该怎么做,这是明智的做法吗?

def main():
    while True:
        runPgm()

def runPgm():
    while True:
        a = str(input("Input?: "))
        if a == 'n':
            break
    return

if __name__ == '__main__':
    main()

4 个答案:

答案 0 :(得分:1)

您只需要一个无限循环

def main():
    runPgm()

def runPgm():
    while True:
        a = str(input("Input?: "))
        if a == 'n':
            return

if __name__ == '__main__':
    main()

答案 1 :(得分:0)

这不起作用,因为您的break语句(和后续的return)仅退出了对runPgm函数的当前调用。但这会使您返回到main中的循环,而该循环永远不会中断。

通常,您可以通过设置一个布尔值标志来表示要进行进一步的中断,这样可以进行“多次中断”,这在外部循环中进行了检查。但是,在您的情况下,我认为更简单的解决方案是仅使用其中一个循环,而不同时使用两个循环。只需完全摆脱main函数,然后调用runPgm即可!

答案 2 :(得分:0)

在这方面有两件事适合您。

  1. 使用单个g循环。
  2. 相反,while True仅在此处使用break,因为一旦返回,函数就会退出。

请参见下面的python3代码示例。

return

答案 3 :(得分:0)

我的初始代码的原始来源是pygame手册,这里的答案表明我不需要遵循该方法。但是,我仍然不确定为什么pygame中的示例可以自行解决。但这超出了此问题的范围,我很满意不需要实现它。