程序在执行'else'语句之前退出

时间:2015-03-08 00:21:41

标签: python if-statement sys

我正在尝试在Python 2.7中提示。我有一个无限循环,可以使用str(raw_input('$> '))获取用户的输入。然后,它会检查一堆“如果'和' elif'语句(每个语句都是一个特定的命令),看看如何处理输入的命令。我还通过“尝试...除了'”来禁用KeyboardInterrupt。声明,并添加了一个'退出'命令。这就是问题所在。 '退出'命令运行良好,打印' Bye'然后退出。但是,其他所有未知命令也是如此。

我尝试过使用内置的quit()exit()函数以及sys.exit(),但都没有解决问题。我还装了我的“如果' while循环中的语句检查它是否'退出'命令,然后使用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”,程序将打印“再见”。并退出。

1 个答案:

答案 0 :(得分:1)

msg == 'quit' or 'exit'

装置

(msg == 'quit') or 'exit'