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

4 投票
3 回答
80023 浏览
提问于 2025-05-01 01:36

我正在自学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 个回答

1

不过,我注意到一个奇怪的现象。如果我直接点击绿色按钮运行整个代码,代码是可以正常工作的;但如果我试着通过按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)

2

为了说明评论的内容,这里提到的是在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的?

4

你的第三次尝试是对的,但在这段代码之前和之后,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))

撰写回答