如何使用 Python 中的输入输入整数[重复]
- 2025-02-28 08:22:00
- admin 原创
- 52
问题描述:
我正在尝试自学如何用 Python 编写代码,这是我第一次在 Stack Overflow 上发帖,所以如果本文有任何不当之处,请多多包涵。不过让我们开始吧。
我正在尝试使用 input 命令返回一个整数。我也做了研究,因此下面是我在 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,但到目前为止都没有用。有什么建议吗?我只想输入一个整数并将其返回为一个整数。
解决方案 1:
你的第三次尝试是正确的 - 但是这段代码之前/之后发生了什么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))
解决方案 2:
为了说明注释,来自 Windows 上的 3.4.2 Idle Shell,python.org (PSF) 安装程序
>>> n = int(input('Guess1: '))
Guess1: 2
>>> n2 = float(input('Guess2: '))
Guess2: 3.1
>>> n, n2
(2, 3.1)
您使用的是什么系统以及如何安装 Python?
解决方案 3:
但是,我注意到一些奇怪的事情。如果我只使用传统的运行(即绿色按钮)来运行整个代码,而不是尝试按 F2 来执行个别代码行,代码就会正常工作。有人知道为什么会这样吗?
从PyDev FAQ来看,这似乎是 Eclipse 中的一个问题:
为什么 raw_input() / input() 在 PyDev 中不能正常工作?
eclipse 控制台并不是 shell 的精确副本... 其中一个变化是,当您在 shell 中按下时,它可能会为您提供 \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() 将提示字符串添加到输入变量?,
无法使用 Jython 在 Eclipse 上的 PyDev 控制台中提供用户输入。
扫码咨询,免费领取项目管理大礼包!