How to exit a script in python
如何关闭python中的脚本?sys.exit()不工作..那么问题在哪里呢?编辑:更改了我的文件中的缩进导入系统DEF SIFRAFER():retezec=输入("zadejte slovo:")打印("zadali jste slovo:",retezec)普拉瓦posun=int(输入("zadejte"?斯洛-科利克东南部?ifra posouvat:"))
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| for znak in retezec:
i = ord(znak)
i = i + posun
if (i > ord("z")):
i = i - 26
znak = chr(i)
zprava = zprava + znak
print("Za?ifrovaná zpráva:", zprava)
znovu = input("Znovu? A/N")
if(znovu =="A" or"a"):
sifra()
elif(znovu =="N" or"n"):
sys.exit()
else:
pass
sifra() |
- 你确定要去sys.exit()吗?
- @我敢肯定他没有(或者如果代码缩进正确的话我会)。
- 您对函数sifra的定义没有正确写入,请正确缩进。
- znovu =="N" or"n"没有按你的期望去做。
- 试用exit(0),不使用sys。
- quit()是另一种选择。
- 解决这一问题的一种方法是执行znovu.upper() =="A"和znovu.upper() =="N"。
znovu =="N" or"n"不是你想要的。您需要将znovu与这两个值进行比较:
1 2
| elif (znovu == 'N') or (znovu == 'n'):
sys.exit() |
另一种选择是在评论中提出的,或者简单地:
1
| elif znovu in 'Nn': sys.exit() |
假设没有人输入"nn"作为答案,但即使他们(意外)这样做,这仍然可以被视为"no"。
- 或者:elif znovu in ['N', 'n']:。
- 如果我使用elif (znovu == 'N') or (znovu == 'n'): sys.exit()程序立即关闭,并且在命令错误中为"unindent不匹配任何外部缩进级别",并且如果我将if(znovu =="A" or"a"): sifra()更正为if(znovu == 'A') or (znovu == 'a'): sifra()则错误相同。
- @Pandik70,确保代码中没有混合制表符和空格
- @forcebru你知道怎么检查吗?
- @Pandik70,好吧,如果你的代码不是太大,你可以创建一个新的文件并在那里重写(不要复制和粘贴!)。您还可以编写一个新的python脚本,通过repr函数读取文件并输出其内容,并使其在代码中运行:如果找到选项卡,则输出\\t;如果找到空间,则输出空白。然后检查是否有混合空格和选项卡,并编辑这些混合。
- @强制完成…这是密码…我没有用多个空格代替制表符。if和括号之间的空间有关系吗?
- @pandik70,首先,您必须在函数声明之后添加:。其次,Python的代码块是通过对齐方式分离的,或者,确切地说,缩进(我们在C/C++中使用卷曲括号和EDCOX1,7)/EDCX1(8)在Pascal中使用。现在,您可以看到函数第一行中的retezec放错了位置:它从整体结构中"弹出"(在您发布的链接中可以清楚地看到)。这是个问题。
- 这里您使用了四个空格而不是一个制表符符号。只需去掉空格并插入一个制表符即可。
- @Pandik70,这很好用(包括一些在Python程序员中广泛使用的代码风格提示)