无法在Python 3.2中比较输入字符串

4
我在Python中遇到了一个非常奇怪的问题。这两篇文章似乎没有帮助:验证Python中用户输入字符串的有效性Python中比较字符串的最快方法
我编写了以下小程序test.py:
import sys
while True:
    print("\n")
    print("Type exit to exit: ")

    inputvar = str(input())
    print("Input: "+inputvar)

    if inputvar == 'exit':
        print("Exiting!")
        sys.exit("\n\nProgram quit.")
    else:
        print("Still here")

当前版本似乎不能使用exit'exit'"exit"退出。使用input()而不是str(input())似乎没有什么区别,使用isin而不是==也没有区别。

我正在使用Windows 7上的Python 3.2。


在Python 3中,按照发布的方式对我有效。 - Daniel Roseman
1
input()已经返回一个字符串,所以str(input())不会有任何区别。is比较身份,而不是相等性,所以对于字符串比较来说是一个糟糕的选择;使用==是正确的做法。如果你在代码中说'exit'!='exit',那么你肯定有一个严重的问题;你确定没有引入一些空白字符吗?尝试使用inputvar.strip()print(repr(inputvar))来查看发生了什么。 - jonrsharpe
2
尝试添加 inputvar.strip(),以防万一存在一些尾随空格。 - ilent2
这对我也有效,但在Debian上使用Python 3.4... - n00dl3
1
print(repr(inputvar))打印出'exit\r',显然加入了回车符。加上.strip()就可以正常工作! - Gray
2个回答

7

在Python 3.2.0中存在一个错误,即未能从input()中删除尾随的\r详见此处。 我建议您升级(这在3.2.1中得到了快速修复)。 如果无法升级,则可以执行以下操作:

inputvar = input().rstrip()

-3

input()函数返回一个字符串

因此不需要使用str(input())

或者你可以直接使用

inputvar = input().strip()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接