为什么我的 exit() 命令在 python 中不起作用?

Why does my exit() command not work in python?

下面是我根据输入计算卡路里的代码,在打印语句之后我想退出代码并无限循环直到用户输入正确的值。

import sys
def main():
    while True:
        try: 
            print("Please enter Age,Weight,Heart Rate and Workout Time ")
            Age,Weight,HR,Time = map(eval,input().split(' '))
            men = ( (Age * 0.2017) - (Weight * 0.09036) + (HR * 0.6309) - 55.0969 ) * Time / 4.184
            women =  ( (Age * 0.074) - (Weight * 0.05741) + (HR * 0.4472) - 20.4022 ) * Time / 4.184
            print("Men:",men," Calories \nWomen:",women,"Calories \n")
            exit()
        except:
            print("Please enter numbers only \n \n")

if __name__ == '__main__':
    main()

即使输入值正确,代码也转到 except 并且不退出代码,我错过了什么?

exit()(某些形式;它实际上不应该在脚本中使用,所以它可以被重写以做奇怪的事情;你想要 sys.exit())是通过提高 SystemExit 异常(退出而不冒泡将意味着 finallywith 语句中的清理块不执行,这很糟糕,因此他们使用异常机制进行清理)。 SystemExit 有两个特殊之处:

  1. 如果未处理,它不会转储回溯并以固定状态 1 退出(它只是以提供的状态代码静默退出程序)
  2. 不是Exception的child,所以except Exception:,范围很广,还是抓不住

但是你使用了一个简单的 except,它捕获了 所有东西,包括 SystemExit

在这种特定情况下,正确的解决方案实际上是将 exit() 替换为 break,这将使您跳出 while 循环并允许程序 运行 完全不需要异常就完成了。并在使用时使用更窄的 except 子句。