how to exit a python script in an if statement
我正在使用python 3.2,并尝试在用户输入了他们不想继续的内容后退出它,是否有代码可以在while循环中的if语句中退出它?我已经尝试过使用exit(),sys.exit(),sys.quit(),quit(),并提高SystemExit。
- 所有这些都应该有效吗?
- if True: exit()工程。
- 你能给我们看一下你用的代码吗?你是想退出程序,还是仅仅是if语句?出于某种原因,您正在捕获SystemExit吗?
- 您的代码是否满足退出声明所处的if条件?
- 唯一可能失败的情况是(a)没有实际调用exit,(b)捕获SystemExit或BaseException,(c)多线程或多处理,(d)真正糟糕的信号处理,或(e)嵌入式/自定义python解释器。我强烈怀疑是(a)。但是如果你不给我们你的代码(或者,更好的是,一个最小限度地显示相同问题的SSCC),我们只能做怀疑和猜测。
- 我试图退出整个脚本,代码是:(newline)if answer.lower().startswith("y"):(newline)print("ok,carry-the n")(newline)elif answer.lower().startswith("n"):(newline)print("ok,sayonara")(newline)sys.exit())
- @伊桑:在评论中不可能格式化代码。这使得它很难读取(也使得它不可能诊断缩进错误)。只需编辑您的问题并将正确格式的代码粘贴到那里。另外,请描述您看到的实际输入/输出序列。(例如,如果您键入"n",请参见"OK,sayonnara",但不要退出,请准确地告诉我们。)
- 您尝试的所有操作都会成功,但是如果您在IDE中运行代码,它们只会给出一个错误,但是如果您从命令运行它,它将退出,这可能是您代码中的其他内容。
- @伊桑把你的密码贴在问号栏里。
- @克里斯蒂安卡雷加:首先,至少他们中的一些人在任何地方都不会工作(没有像sys.quit()这样的东西)。其次,我不知道您使用的是什么IDE,但是在空闲、Eclipse/Pydev和两种主要的Emacs模式下,如果您的程序正常退出,那么IDE不会给出错误。
- @很抱歉,试图写空闲。它只会弹出一个出口。我的意思是,我说的是空闲。它不会真正关闭窗口。它会停止程序。很抱歉。
- 这变得越来越困难,而不是只需要在问题中发布你的代码,我相信我们中的一个可以很容易地帮助你!!
- @克里斯蒂安卡雷加:我理解你的沮丧,但实际上,除了手术本身,这里对任何人都没有伤害。如果他从不把问题修改成可以回答的问题,那么它就会被关闭(要么是现在,要么是几个月后,当有人搜索相同的问题,发现一个死的、无用的问题)。
- @不是很真实
- 副本:stackoverflow.com/q/73663/3345375
这对我来说很好:
1 2 3 4 5 6 7
| while True:
answer = input('Do you want to continue?:')
if answer.lower().startswith("y"):
print("ok, carry on then")
elif answer.lower().startswith("n"):
print("sayonara, Robocop")
exit() |
编辑:在python 3.2中使用input,而不是raw_input。
- 已经设置了类似的内容,但它不起作用。这就是密码。if answer.lower().startswith("y"):print("ok,carry on then")elif answer.lower().startswith("n"):print("ok,sayonara")sys.exit()。
- @伊桑,这个溶液很好。在这里粘贴您的准确代码。
- 我几乎是一字不差地在我的Python解释器中键入了您的代码,它工作得很好。你应该发布你的代码。也许你的while循环中还发生了什么?
- @Tkoomzaaskz:运营商说这行不通,为什么他们会接受呢?
- 如果这在Python3.2中真的适用于您,我会非常惊讶的。当我尝试的时候,我得到了预期的NameError。
- @abarnet把raw_input改成input就行了。这是你的意思吗?
- 是的,谢谢你指出这一点。不管获取输入的机制是什么,关键是exit()函数在正确测试if语句时结束程序。
- 我百分之百肯定您的代码是有效的,因为它是如此简单和正确:)@abarnett-这个代码有什么问题吗?
- @Tkoomzaaskz:是的,我几乎100%确信这个代码可以工作。遗憾的是,我也有95%的人确信这不是操作码(即使他暗示这是),否则他一开始就不会有这个问题……
- 建议先使用import sys,再使用sys.exit(),不要使用内置的exit()。请参见python中的官方文档和exit()和sys.exit()之间的区别。
- 未定义名称"exit"