如何使用Python中的输入输入整数

How do you input integers using input in Python

我正在尝试自学如何用Python编写代码,这是我第一次发布Stack Overflow,所以请原谅这篇文章中的任何不当行为。 但是让我们做对了。

我正在尝试使用input命令返回一个整数。 我也完成了我的研究,所以下面是我在Python 3.4中的多次尝试以及随后的结果:

尝试#1

1
guess_row = int(input("Guess Row:"))

我回过头来看:

1
2
3
Traceback (most recent call last):
File"<input>", line 1, in <module>
ValueError: invalid literal for int() with base 10: 'Guess Row: 2`

尝试#2

1
guess_row = float(input("Guess Row:"))

我回过头来看:

1
2
3
Traceback (most recent call last):
File"<input>", line 1, in <module>
ValueError: could not convert string to float:"Guess Row: 2""

尝试#3

1
2
3
4
try:
    guess_row=int(input("Guess Row:"))
except ValueError:
    print("Not an integer")

在这里,我回过头来看:

1
2
Guess Row: 2
Not an integer

虽然它返回了一些东西,但我知道这是错误的,因为,对于一个,输入作为字符串返回,它也返回print命令。

重点是,我尝试过int,float和try,到目前为止没有任何工作。 有什么建议? 我只是希望能够输入一个整数并将其作为一个整数返回。


你的第三次尝试是正确的 - 但是在此代码之前/之后guess_row发生了什么? 例如,请考虑以下事项:

1
2
3
4
5
6
a ="Hello"
try:
    a = int(input("Enter a number:"))
except ValueError:
    print("Not an integer value...")
print(str(a))

如果输入有效数字,最后一行将打印出您输入的值。 如果没有,将引发异常(在except块中显示错误消息)并且a将保持不变,因此最后一行将打印"Hello"。

您可以对此进行优化,以便无效的数字将提示用户重新输入值:

1
2
3
4
5
6
7
a = None
while a is None:
    try:
        a = int(input("Enter a number:"))
    except ValueError:
        print("Not an integer value...")
print(str(a))

为了说明这些注释,请参见3.4.2 Idle Shell on Windows,python.org(PSF)安装程序

1
2
3
4
5
6
>>> n = int(input('Guess1: '))
Guess1: 2
>>> n2 = float(input('Guess2: '))
Guess2: 3.1
>>> n, n2
(2, 3.1)

你使用什么系统,你是如何安装Python的?


However, I noticed something odd. The code works if I run it just by using the traditional run (i.e., the green button) that runs the entire code, rather than trying to execute individuals lines of code by pressing F2. Does anyone know why this may be the case?

这似乎是Eclipse中的问题,来自PyDev FAQ:

Why raw_input() / input() does not work correctly in PyDev?

The eclipse console is not an exact copy of a shell... one of the changes is that when you press in a shell, it may give you a
,
or

as an end-line char, depending on your platform. Python does not expect this -- from the docs it says that it will remove the last
(checked in version 2.4), but, in some platforms that will leave a
there. This means that the raw_input() should usually be used as raw_input().replace('
', ''), and input() should be changed for: eval(raw_input().replace('
', '')).

另见:
Eclipse 4中的PyDev 3.7.1 - input()将提示字符串添加到输入变量?,
无法使用Jython在Eclipse上的PyDev控制台中提供用户输入。