【问题标题】:How do you input integers using input in Python如何在 Python 中使用 input 输入整数
【发布时间】:2014-12-28 19:58:44
【问题描述】:

我正在尝试自学如何用 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,但到目前为止没有任何效果。有什么建议?我只想能够输入一个整数并将其作为一个返回。

【问题讨论】:

  • 您的解释器有问题。尝试重新安装。
  • 我从未见过这样的错误,您输入的所有语句都是正确的。尝试重新安装
  • 如果您在字符串Guess Row: 2 上运行int;我假设您只是在输入:2&lt;enter&gt;? ...你确定你没有不小心重新定义了函数input
  • 解释器的行为不应像您发布的那样;我建议重新安装。
  • 请在 Eclipse 之外独立运行您的程序。 IDE 可能有错误并导致此问题。

标签: python python-3.x input int


【解决方案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】:

    为了说明 cmets,来自 3.4.2 Idle Shell on Windows,python.org (PSF) 安装程序

    >>> n = int(input('Guess1: '))
    Guess1: 2
    >>> n2 = float(input('Guess2: '))
    Guess2: 3.1
    >>> n, n2
    (2, 3.1)
    

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

    【讨论】:

      【解决方案3】:

      但是,我注意到了一些奇怪的事情。如果我只使用运行整个代码的传统运行(即绿色按钮)而不是尝试通过按 F2 来执行单独的代码行来运行代码,那么代码就可以工作。有谁知道为什么会这样?

      这似乎是 Eclipse 中的一个问题,来自the PyDev FAQ

      为什么 raw_input() / input() 在 PyDev 中不能正常工作?

      eclipse 控制台不是 shell 的精确副本...其中一个变化是当你按下 shell 时,它可能会给你一个 \r、\n 或 \r\n 作为结束行char,取决于您的平台。 Python 并不期望这一点——从文档中它说它将删除最后一个 \n (在 2.4 版中检查),但是,在某些平台上会留下一个 \r 。这意味着 raw_input() 通常应该用作 raw_input().replace('\r', ''),而 input() 应该更改为:eval(raw_input().replace('\r', ' '))。

      另见: PyDev 3.7.1 in Eclipse 4 — input() prepends prompt string to input variable?, Unable to provide user input in PyDev console on Eclipse with Jython.

      【讨论】:

      • 起初,PyDev FAQ 中的解决方案奏效了。如此处所示:give=eval(raw_input('Number:').replace('\r', 'Number')) Number:2 type(give) &lt;type 'int'&gt; 但是当我使用 PyDev 在 Eclipse 中再次执行同一行时,我得到了give=eval(raw_input('Number:').replace('\r', 'Number')) Number:2 Traceback (most recent call last): File "&lt;input&gt;", line 1, in &lt;module&gt; File "&lt;string&gt;", line 1 Number:2 ^ SyntaxError: invalid syntax
      猜你喜欢
      • 2017-10-05
      • 2018-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多