我怎样才能读取整数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,称为input
和raw_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
,它检测到你正在添加两个数字,所以结果也将是相同的int
types。 所以,types转换是免费的, 22
是作为input
的结果返回并存储在data
variables中。 您可以将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
您可以通过使用break
和while True
来摆脱play
variables。
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-future
的builtins.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