it-swarm.dev

如何将输入读作数字?

为什么xy字符串而不是以下代码中的ints?

(注意:在Python 2.x中使用raw_input()。在Python 3.x中使用input()raw_input()在Python 3.x中被重命名为input()

play = True

while play:

    x = input("Enter a number: ")
    y = input("Enter a number: ")

    print(x + y)
    print(x - y)
    print(x * y)
    print(x / y)
    print(x % y)

    if input("Play again? ") == "no":
        play = False
262
Hosch250

_ tldr _

  • Python 3不会评估使用input函数接收的数据,但Python 2的input函数会执行此操作(请阅读下一节以了解其含义)。
  • Python 2的等效于Python 3的inputraw_input函数。

Python 2.x

有两个函数可以获取用户输入,称为 inputraw_input 。它们之间的区别在于,raw_input不会以字符串形式评估数据并按原样返回。但是,input将评估您输入的内容,并返回评估结果。例如,

>>> import sys
>>> sys.version
'2.7.6 (default, Mar 22 2014, 22:59:56) \n[GCC 4.8.2]'
>>> data = input("Enter a number: ")
Enter a number: 5 + 17
>>> data, type(data)
(22, <type 'int'>)

评估数据5 + 17,结果为22。当它计算表达式5 + 17时,它会检测到您正在添加两个数字,因此结果也将是相同的int类型。因此,类型转换是免费完成的,22作为input的结果返回并存储在data变量中。您可以将input视为由 eval 调用组成的raw_input

>>> data = eval(raw_input("Enter a number: "))
Enter a number: 5 + 17
>>> data, type(data)
(22, <type 'int'>)

注意: 在Python 2.x中使用input时应该小心。我解释了为什么在使用它时应该小心,在 这个答案

但是,raw_input不会评估输入并按字符串形式返回。

>>> import sys
>>> sys.version
'2.7.6 (default, Mar 22 2014, 22:59:56) \n[GCC 4.8.2]'
>>> data = raw_input("Enter a number: ")
Enter a number: 5 + 17
>>> data, type(data)
('5 + 17', <type 'str'>)

Python 3.x

Python 3.x的 input 和Python 2.x的raw_input类似,而raw_input在Python 3.x中不可用。

>>> import sys
>>> sys.version
'3.4.0 (default, Apr 11 2014, 13:05:11) \n[GCC 4.8.2]'
>>> data = input("Enter a number: ")
Enter a number: 5 + 17
>>> data, type(data)
('5 + 17', <class 'str'>)

解决方案

要回答你的问题,因为Python 3.x不评估和转换数据类型,你必须使用 int 显式转换为ints,就像这样

x = int(input("Enter a number: "))
y = int(input("Enter a number: "))

您可以接受任何基数,并使用int函数将它们直接转换为base-10,如下所示

>>> data = int(input("Enter a number: "), 8)
Enter a number: 777
>>> data
511
>>> data = int(input("Enter a number: "), 16)
Enter a number: FFFF
>>> data
65535
>>> data = int(input("Enter a number: "), 2)
Enter a number: 10101010101
>>> data
1365

第二个参数告诉输入数字的基数是什么,然后在内部理解并转换它。如果输入的数据错误,则会抛出ValueError

>>> data = int(input("Enter a number: "), 2)
Enter a number: 1234
Traceback (most recent call last):
  File "<input>", line 1, in <module>
ValueError: invalid literal for int() with base 2: '1234'

对于可以包含小数组件的值,类型将是float而不是int

x = float(input("Enter a number:"))

除此之外,您的程序可以稍微改变一下,就像这样

while True:
    ...
    ...
    if input("Play again? ") == "no":
        break

您可以使用playwhile True删除break变量。

_ ps _ :Python不期望行尾的; :)

270
thefourtheye

在Python 3.x中,raw_input被重命名为input并删除了Python 2.x input

这意味着,就像raw_inputinput 在Python 3.x中总是返回一个字符串对象。

要解决此问题,您需要将这些输入显式地放入整数中,方法是将它们放入 int

x = int(input("Enter a number: "))
y = int(input("Enter a number: "))

此外,Python不需要/使用分号来结束行。所以,拥有它们并没有做任何积极的事情。

39
iCodez

对于单行中的多个整数, map 可能更好。

arr = map(int, raw_input().split())

如果已知数字(如2个整数),则可以使用

num1, num2 = map(int, raw_input().split())
22
user1341043

input()(Python 3)和raw_input()(Python 2) always return strings。使用int()将结果显式转换为整数。

x = int(input("Enter a number: "))
y = int(input("Enter a number: "))

专业提示:Python中不需要分号。

13
Martijn Pieters

多个问题需要在单行上输入几个整数。最好的方法是将整个数字串输入一行,然后将它们拆分为整数。

 p=raw_input()
    p=p.split()      
    for i in p:
        a.append(int(i))
9
gumboy

转换为整数:

my_number = int(input("enter the number"))

对于浮点数类似:

my_decimalnumber = float(input("enter the number"))
6
Hemanth Savasere

Python 3.x
在python中输入int作为输入:我们使用一个简单的string输入:

input()

现在我们想要int作为输入。所以我们只需使用以下命令将string类型化为int

int(input())
6
Rohit-Pandey

Python 3.x中 默认情况下,输入函数以字符串格式输入。要将其转换为整数,您需要包含int(input())

x=int(input("Enter the number"))
5
Madhusudan chowdary

Python 3.x有input()函数,它总是返回string.So你必须转换为int

python 3.x

x = int(input("Enter a number: "))
y = int(input("Enter a number: "))

python 2.x

在python 2.x中raw_input()input()函数总是返回字符串,所以你必须将它们转换为int。

x = int(raw_input("Enter a number: "))
y = int(input("Enter a number: "))
5
Harun ERGUL
def dbz():
    try:
        r = raw_input("Enter number:")
        if r.isdigit():
            i = int(raw_input("Enter divident:"))
            d = int(r)/i
            print "O/p is -:",d
        else:
            print "Not a number"
    except Exception ,e:
        print "Program halted incorrect data entered",type(e)
dbz()

Or 

num = input("Enter Number:")#"input" will accept only numbers
3
Sanyal

我遇到了解决整数输入的问题,同时解决了 CodeChef 上的问题,其中两个整数 - 用空格分隔 - 应该从一行读取。

虽然int(input())对于单个整数就足够了,但我没有找到输入两个整数的直接方法。我试过这个:

num = input()
num1 = 0
num2 = 0

for i in range(len(num)):
    if num[i] == ' ':
        break

num1 = int(num[:i])
num2 = int(num[i+1:])

现在我使用num1和num2作为整数。希望这可以帮助。

3
Aravind
play = True

while play:

    #you can simply contain the input function inside an int function i.e int(input(""))
    #This will only accept int inputs
    # and can also convert any variable to 'int' form

    x = int(input("Enter a number: "))    
    y = int(input("Enter a number: "))

    print(x + y)
    print(x - y)
    print(x * y)
    print(x / y)
    print(x % y)

    if input("Play again? ") == "no":
        play = False
2
uday more
n=int(input())
for i in range(n):
    n=input()
    n=int(n)
    arr1=list(map(int,input().split()))

for循环应该'n'次运行。第二个'n'是数组的长度。最后一个语句将整数映射到列表并以空格分隔形式获取输入。你也可以在for循环结束时返回数组。

2
ravi tanwar

虽然在你的例子中,int(input(...))在任何情况下都能解决问题,python-futurebuiltins.input 值得考虑,因为这样可以确保你的代码适用于Python 2和3禁用Python2的input的默认行为对输入数据类型“聪明”(builtins.input基本上就像raw_input一样)。

2
Tobias Kienzler

是的,在python 3.x中,raw_input被替换为input。为了恢复input的旧行为,请使用:

eval(input("Enter a number: "))

这将让python知道输入的输入是整数

1
Waseem Akhtar
play = True

while play:
    x = input("Enter a number: ")
    y = input("Enter a number: ")

    print(int(x) + int(y))
    print(int(x) - int(y))
    print(int(x) * int(y))
    print(int(x) / int(y))
    print(int(x) % int(y))

    if input("Play again? ") == "no":
        play = False

这使得它知道变量xy是整数,因此它们像整数一样使用它们。
如果您希望它能够使用小数,请将int更改为float

第一个函数的输出:

print(int(x) + int(y))

x = 3y = 7返回10

0
Gregg Morgan

在输入数据的情况下,它总是被视为字符串。所以你需要在Int中明确地转换它。您的代码应如下所示:

play = True

while play:

  x = (input("Enter a number: ")
  y = input("Enter a number: ")

  print(int(x) + int(y))
  print(int(x) - int(y))
  print(int(x) * int(y))
  print(int(x) / int(y))
  print(int(x) % int(y))

  if input("Play again? ") == "no":
    play = False `
0
Tarun Singhal

使用int将输入解析为整数

x = int(input("What is x?"))
0
Ewanziak

很多人喜欢做int(input("etc")),但如果你输入一个字符串,就会引发错误。

我喜欢做的是:

s = input("integer: ")
integer = int(s)

现在使用整数用于任何目的!!

另外,如果s是一个字符串,这不会引发错误!

至少,不是立即。

0
user11093202