即使用户输入“1”,`choice == 1`也为False

时间:2011-06-09 15:25:29

标签: python

我开始学习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并收到“您输入:”消息,然后脚本退出而不显示“退出”消息。

似乎应该这么简单。提前感谢您的帮助。

6 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:2)

  1. 使用raw_input()代替sys.stdin.readline()
  2. choice == 1更改为choice == '1'

答案 2 :(得分:1)

问题是readline会返回一个字符串,但您的if语句需要int。要将字符串转换为int,您可以使用int(choice.strip())(如果输入的内容不是有效数字,请准备好引发异常)。

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

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

答案 3 :(得分:1)

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

尝试选择==“1”

答案 4 :(得分:0)

readline函数在输入结束时保留换行符。你的第一个应该是:

if choice == "1\n":

假设您需要换行符。

答案 5 :(得分:0)

它正在通过调用quit()退出,因为它需要else分支。那是因为'1'(一个字符串)不等于1,一个整数。