Python `选项==1`即使用户输入“1”也为False

Python `选项==1`即使用户输入“1”也为False,python,Python,我开始学习python。我已经完成了几个教程,现在我正在尝试编写我的第一个脚本。这是一个简单的控制台菜单。我正在cygwin下运行Python 2.6.5 这是我的剧本: import sys print "********************************************************************" print "** 1) This is menu choice #1 **

我开始学习python。我已经完成了几个教程,现在我正在尝试编写我的第一个脚本。这是一个简单的控制台菜单。我正在cygwin下运行Python 2.6.5

这是我的剧本:

import sys

print "********************************************************************"
print "**  1) This is menu choice #1                                     **"
print "**                                                                **"
print "**                                                                **"
print "**                                                                **"
print "**                                                                **"
print "**                                                                **"
print "********************************************************************"
print
print "Choice ?"

choice = sys.stdin.readline()

print "You entered: " + choice

if choice == 1:
    choice1 = sys.stdin.readline()
    print "You entered:" + choice1
else:
    quit()

print "Exiting"
当我运行脚本时,我可以选择?促使我输入1,得到You entered:消息,然后脚本退出,而不显示退出消息


看起来应该很容易。提前感谢您的帮助。

readline函数在输入的末尾保留换行符。您的第一个if应该是:

if choice == "1\n":

假设您需要换行。

readline函数将换行保留在输入的末尾。您的第一个if应该是:

if choice == "1\n":
假设您想要换行。

问题是readline返回一个字符串,但if语句需要一个int。要将字符串转换为int,您可以使用intchoice.strip,如果输入的不是有效数字,它将引发异常

In [8]: choice
Out[8]: '1\n'

In [9]: int(choice.strip())
Out[9]: 1
问题是readline返回一个字符串,但if语句需要一个int。要将该字符串转换为int,可以使用intchoice.strip,以便在输入的不是有效数字时引发异常

In [8]: choice
Out[8]: '1\n'

In [9]: int(choice.strip())
Out[9]: 1

您正在将字符串与整数进行比较。尝试将字符串转换为整数:

if int(choice.strip()) == 1:

您正在将字符串与整数进行比较。尝试将字符串转换为整数:

if int(choice.strip()) == 1:

不确定,但我认为用户输入的是字符串,而不是数字。数字1和字符串1是两个完全不同的东西


Try choice==1

不确定,但我认为用户输入的是字符串,而不是数字。数字1和字符串1是两个完全不同的东西

Try choice==1

使用原始输入而不是sys.stdin.readline 将choice==1更改为choice==1 使用原始输入而不是sys.stdin.readline 将choice==1更改为choice==1
它正在通过调用quit退出,因为它占用了else分支。这是因为字符串“1”不等于1,即整数。

它通过调用quit退出,因为它接受else分支。这是因为字符串“1”不等于1,而是整数。

1+。一针见血。还要注意Python是一种类型,您可以省略strip和int-trims。一针见血。还请注意Python是一种类型,您可以省略strip、int trims。仅供参考,使用raw\u inputChoice会更常见吗?获取用户输入。您能改进问题标题吗?它没有描述问题主题。仅供参考,使用原始输入选项更为常见?获取用户输入。您能改进问题标题吗?它没有描述这个问题的主题。我相信有几个答案是可行的。这是我第一次在网上发布问题。这个网站很棒@Tomalak Geret'kal我将来会更具描述性,谢谢你的投入。我相信其中几个答案会有用的。这是我第一次在网上发布问题。这个网站很棒@Tomalak Geret'kal I将在未来更具描述性,感谢您的输入。