如何在Python中使用输入输入整数
我正在自学Python编程,这是我第一次在Stack Overflow发帖,所以如果帖子里有不妥之处请多包涵。不过我们直接进入正题吧。
我想用输入命令来获取一个整数。我也做了一些研究,下面是我在Python 3.4中的几次尝试和结果:
尝试 #1
guess_row = int(input("Guess Row: "))
我得到的结果是:
Traceback (most recent call last):
File "<input>", line 1, in <module>
ValueError: invalid literal for int() with base 10: 'Guess Row: 2`
尝试 #2
guess_row = float(input("Guess Row: "))
我得到的结果是:
Traceback (most recent call last):
File "<input>", line 1, in <module>
ValueError: could not convert string to float: "Guess Row: 2""
尝试 #3
try:
guess_row=int(input("Guess Row: "))
except ValueError:
print("Not an integer")
在这里,我得到的结果是:
Guess Row: 2
Not an integer
虽然我得到了某些结果,但我知道这是错误的,因为输入返回的是字符串,而且还返回了打印命令。
我的意思是,我尝试了int、float和try,但到目前为止都没有成功。有没有什么建议?我只是想输入一个整数,并且希望它能作为整数返回。
3 个回答
不过,我注意到一个奇怪的现象。如果我直接点击绿色按钮运行整个代码,代码是可以正常工作的;但如果我试着通过按F2来执行单独的代码行,就不行。有人知道这是为什么吗?
这似乎是Eclipse中的一个问题,来自PyDev的常见问题解答:
为什么raw_input() / input()在PyDev中不能正常工作?
Eclipse的控制台并不是一个完全一样的命令行... 其中一个变化是,当你在命令行中按下回车键时,可能会根据你的系统返回不同的结束符,比如\r、\n或\r\n。而Python并不期望这样——根据文档,它会去掉最后的\n(在2.4版本中检查过),但在某些系统上,这样做可能会留下一个\r。这意味着通常情况下,raw_input()应该写成raw_input().replace('\r', ''),而input()则应该改为:eval(raw_input().replace('\r', '')).
还可以查看: Eclipse 4中的PyDev 3.7.1 — input()在输入变量前加上提示字符串?, 在Eclipse的PyDev控制台中无法提供用户输入(使用Jython)。
为了说明评论的内容,这里提到的是在Windows上使用的3.4.2版本的空闲命令行,来自python.org(PSF)安装程序。
>>> n = int(input('Guess1: '))
Guess1: 2
>>> n2 = float(input('Guess2: '))
Guess2: 3.1
>>> n, n2
(2, 3.1)
你在使用什么系统?你是怎么安装Python的?
你的第三次尝试是对的,但在这段代码之前和之后,guess_row
发生了什么呢?比如,看看下面这个例子:
a = "Hello"
try:
a = int(input("Enter a number: "))
except ValueError:
print("Not an integer value...")
print(str(a))
如果你输入了一个有效的数字,最后一行会打印出你输入的值。如果输入无效,就会出现一个错误(在except
块中显示错误信息),这时候a
的值不会改变,所以最后一行会打印“Hello”。
你可以进一步改进,让用户在输入无效数字时提示他们重新输入:
a = None
while a is None:
try:
a = int(input("Enter a number: "))
except ValueError:
print("Not an integer value...")
print(str(a))