Python 如何将输入读取为数字?
为什么在下面的代码中Python 如何将输入读取为数字?,python,python-3.x,python-2.7,input,int,Python,Python 3.x,Python 2.7,Input,Int,为什么在下面的代码中x和y是字符串而不是int (注意:在Python2.x中使用raw\u input()。在Python3.x中,使用input()raw\u input()在Python3.x中被重命名为input()) 解决方案 由于Python3,input返回一个字符串,您必须将其显式转换为ints,如下所示 x = int(input("Enter a number: ")) y = int(input("Enter a number: ")
x
和y
是字符串而不是int
(注意:在Python2.x中使用raw\u input()
。在Python3.x中,使用input()
raw\u input()
在Python3.x中被重命名为input()
)
解决方案
由于Python3,input
返回一个字符串,您必须将其显式转换为int
s,如下所示
x = int(input("Enter a number: "))
y = int(input("Enter a number: "))
>>> 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
您可以接受任意基数的数字,并使用int
函数将其直接转换为base-10,如下所示
x = int(input("Enter a number: "))
y = int(input("Enter a number: "))
>>> 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(输入(“输入一个数字”),2)
输入一个数字:1234
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
ValueError:基为2的int()的文本无效:“1234”
对于可以包含分数分量的值,类型应为float
,而不是int
:
x = float(input("Enter a number:"))
Python2和Python3之间的差异
摘要
- Python 2的
函数对接收到的数据进行求值,并将其隐式转换为整数(阅读下一节以了解其含义),但Python 3的input
函数不再这样做input
- Python2相当于Python3的
是input
函数raw\u 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'>)
注意:在Python2.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'>)
input()
(Python 3)和raw\u input()
(Python 2)始终返回字符串。使用int()
将结果显式转换为整数
在Python3.x中,
raw_input
被重命名为input
,Python2.xinput
被删除
这意味着,就像Python3.x中的原始输入一样,总是返回一个string对象
要解决此问题,您需要将这些输入显式转换为整数,方法是将它们放入:
我在解决上的一个问题时遇到了一个获取整数输入的问题,其中两个整数(由空格分隔)应从一行中读取 虽然
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作为整数。希望这有帮助。多个问题需要在一行中输入多个整数。最好的方法是将整串数字输入一行,然后将它们拆分为整数。以下是Python 3版本:
a = []
p = input()
p = p.split()
for i in p:
a.append(int(i))
也可以使用列表理解
p = input().split("whatever the seperator is")
要将所有输入从string转换为int,我们需要执行以下操作
x = [int(i) for i in p]
print(x, end=' ')
应以直线打印列表元素。对于单行中的多个整数,可能更好
arr = map(int, raw_input().split())
如果数字已经已知(如2个整数),则可以使用
num1, num2 = map(int, raw_input().split())
转换为整数:
my_number = int(input("enter the number"))
类似地,对于浮点数:
my_decimalnumber = float(input("enter the number"))
虽然在您的示例中,
int(input(…)
在任何情况下都能起作用,python future
值得考虑,因为这可以确保您的代码同时适用于Python2和pytho3,并禁用Python2的默认行为input
,试图对输入数据类型“聪明”(内置输入
基本上就像原始输入
)
for循环应运行“n”次。第二个“n”是数组的长度。
最后一个语句将整数映射到一个列表,并以空格分隔的形式接受输入。
您还可以在for循环的末尾返回数组。这看起来很有趣。但是,退出
for
循环时,i
不是被破坏了吗?@hosch250
退出循环时,索引变量的值(这里,i
)保留。我尝试了这一部分,它工作正常。对于这种输入操作,您可以选择num1,num2=map(int,input().split())
如果您知道将遇到多少整数,或者nums=list(map(int,input().split())
如果你没有。有没有其他方法,比如函数或其他东西,我们不需要在3.x中转换为int,只需要显式转换为int???@shryanmehtaeval
可以,但除非你有紧迫的理由,否则不要这样做。@thefourtheye至少可以这样做。它没有的安全问题>评估
。
num1, num2 = map(int, raw_input().split())
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
my_number = int(input("enter the number"))
my_decimalnumber = float(input("enter the number"))
n=int(input())
for i in range(n):
n=input()
n=int(n)
arr1=list(map(int,input().split()))