程序在执行 'else' 语句之前退出
Program Exits Before Executing 'else' Statement
我正在尝试在 Python 2.7 中进行提示。我有一个无限循环,它将使用 str(raw_input('$> '))
获取用户的输入。然后,它检查一堆 'if' 和 'elif' 语句(每个语句都是一个特定的命令)以查看如何处理输入的命令。我还通过 'try... except' 语句禁用了 KeyboardInterrupt,并添加了 'exit' 命令。这就是问题所在。 'exit' 命令 运行 很好,打印 'Bye' 然后退出。但是,所有其他未知命令也是如此。
我已经尝试使用内置的 quit()
和 exit()
函数以及 sys.exit()
,但其中的 none 解决了问题。我还将我的 'if' 语句封装在一个 while 循环中,该循环检查它是否是 而不是 'exit' 命令,然后使用 else 语句退出。但是,它只打印 Command "exit" not found.
我的问题是 a) 为什么 Python 会为它之后的任何语句执行该代码,以及 b) 如果可能的话,如何解决这个问题。
我对 a) 的理论是,因为 Python 是逐行解释的,所以它读取该行并出于某种原因执行它。但是,如果命令匹配,它将停止查看 'if' 语句并执行输入命令的代码。
这是我的代码的简化版本,在此先感谢您。
from sys import exit as die
while True:
msg = str(raw_input('$> '))
if msg == 'test':
print '123'
elif msg == 'quit' or 'exit':
print 'Bye'
die()
elif msg == 'test2':
print '456'
else:
print 'Command "%s" not found' % (msg)
如果我运行 'test2' 命令,或未知命令'foo',程序将打印'Bye' 并退出。
msg == 'quit' or 'exit'
表示
(msg == 'quit') or 'exit'
我正在尝试在 Python 2.7 中进行提示。我有一个无限循环,它将使用 str(raw_input('$> '))
获取用户的输入。然后,它检查一堆 'if' 和 'elif' 语句(每个语句都是一个特定的命令)以查看如何处理输入的命令。我还通过 'try... except' 语句禁用了 KeyboardInterrupt,并添加了 'exit' 命令。这就是问题所在。 'exit' 命令 运行 很好,打印 'Bye' 然后退出。但是,所有其他未知命令也是如此。
我已经尝试使用内置的 quit()
和 exit()
函数以及 sys.exit()
,但其中的 none 解决了问题。我还将我的 'if' 语句封装在一个 while 循环中,该循环检查它是否是 而不是 'exit' 命令,然后使用 else 语句退出。但是,它只打印 Command "exit" not found.
我的问题是 a) 为什么 Python 会为它之后的任何语句执行该代码,以及 b) 如果可能的话,如何解决这个问题。
我对 a) 的理论是,因为 Python 是逐行解释的,所以它读取该行并出于某种原因执行它。但是,如果命令匹配,它将停止查看 'if' 语句并执行输入命令的代码。
这是我的代码的简化版本,在此先感谢您。
from sys import exit as die
while True:
msg = str(raw_input('$> '))
if msg == 'test':
print '123'
elif msg == 'quit' or 'exit':
print 'Bye'
die()
elif msg == 'test2':
print '456'
else:
print 'Command "%s" not found' % (msg)
如果我运行 'test2' 命令,或未知命令'foo',程序将打印'Bye' 并退出。
msg == 'quit' or 'exit'
表示
(msg == 'quit') or 'exit'