Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将输入读取为数字?_Python_Python 3.x_Python 2.7_Input_Int - Fatal编程技术网

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的
    input
    函数对接收到的数据进行求值,并将其隐式转换为整数(阅读下一节以了解其含义),但Python 3的
    input
    函数不再这样做
  • Python2相当于Python3的
    input
    raw\u input
    函数
python2.x

有两个函数用于获取用户输入,分别称为和。它们之间的区别是,
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.x
input
被删除

这意味着,就像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???@shryanmehta
eval
可以,但除非你有紧迫的理由,否则不要这样做。@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()))