我怎样才能读取整数input?

为什么这个代码不input整数? 网上的一切都说使用raw_input() ,但是我在堆栈溢出(在一个没有处理整数input的线程上raw_input()读取raw_input() 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 

Python 2.x

有两个函数来获得用户input,称为inputraw_input 。 它们之间的区别是, raw_input不会评估数据,并以stringforms返回。 但是, 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 。 当它计算expression式5 + 17 ,它检测到你正在添加两个数字,所以结果也将是相同的inttypes。 所以,types转换是免费的, 22是作为input的结果返回并存储在datavariables中。 您可以将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不会像inputstring那样评估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不会计算和转换数据types,所以你必须用int来显式地转换为int ,就像这样

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

您可以接受任何基数的数字,并使用int函数将它们直接转换为基数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 

第二个参数告诉input数字的基数,然后在内部理解并转换它。 如果input的数据是错误的,将会抛出一个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' 

除此之外,你的程序可以改变一点点,就像这样

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

您可以通过使用breakwhile True来摆脱playvariables。

PS :Python不期望; 在行的末尾:)

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

这意味着,就像raw_input一样,Python 3.x中的input总是返回一个string对象。

为了解决这个问题,你需要通过把它们放入int来明确地把这些input变成整数:

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

另外,Python不需要/使用分号结束行。 所以,让他们没有做任何积极的事情。

input() (Python 3)和raw_input() (Python 2) 总是返回string。 用int()将结果转换为整数。

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

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

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

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

如果号码已经知道了,(比如2个整数),你可以使用

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

多个问题需要在单行上input多个整数。 最好的方法是将整行数字input一行,然后将它们分成整数。

  p=raw_input() p=p.split() for i in p: a.append(int(i)) 
 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 

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

python 3.x

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

python2.x

在Python 2.x raw_input()input()函数总是返回string,所以你必须将它们也转换为int。

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

转换为整数:

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

类似的浮点数字:

 my_decimalnumber = float(input("enter the number")) 

在解决CodeChef上的一个问题时,我遇到了一个整数input的问题,应该从一行读取两个整数(用空格分隔)。

虽然int(input())对于一个整数是足够的,但是我没有find直接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.x中, raw_input被replace为input 。 为了回复旧的input使用行为:

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

这将让Python知道input的input是整数

虽然在你的例子中, int(input(...))在任何情况下都会诀窍, python-futurebuiltins.input值得考虑,因为它确保你的代码同时适用于Python 2和Python 3, 禁用Python 2的默认行为的input试图对input数据types“聪明”( builtins.input基本上就像raw_input一样)。

以int为inputpython:我们采取一个简单的stringinput使用:

 input() 

现在我们需要int作为input.so我们把这个string转换为int。 简单地使用:

 int(input()) 

在Python 3.x. input函数默认采用string格式input。 要转换它整型你需要包括int(input())

 x=int(input("Enter the number")) 

input函数默认采用string格式input

对于其他数据types,您必须投入用户input

在Python 2中,我们使用raw_input()函数。 它等待用户键入一些input,然后按回车键,我们需要将该值存储在一个variables中,通过强制转换为我们所需的数据types。 使用types铸造时要小心

x = raw_input(“input一个数字:”)#Stringinput

x = int(raw_input(“input一个数字:”))#整数input

x = float(raw_input(“input浮点数:”))#浮点input

x = eval(raw_input(“input浮点数:”))#evalinput

在Python 3中,我们使用input()函数返回用户input值

x = input(“input一个数字:”)#Stringinput

如果你input一个string,int,float,eval,它会作为stringinput

x = int(input(“input一个数字:”))#整数input

如果为intinput一个stringValueError:int()的基数为10的无效字面量:

x = float(input(“input浮点数:”))#浮点input

如果为floattypesinputstringValueError:无法将string转换为float

x = eval(input(“input浮点数:”))#evalinput

如果你为evalinput一个stringNameError:name''没有被定义

那些错误也适用于python 2