为什么在下面的代码中x和y是字符串而不是整数?

(注:在Python 2。X使用raw_input()。在Python 3中。X使用input()。在Python 3.x中raw_input()被重命名为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

当前回答

input() (Python 3)和raw_input() (Python 2)总是返回字符串。使用int()显式地将结果转换为整数。

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

其他回答

多个问题要求在一行上输入多个整数。最好的方法是一行一行地输入整串数字,然后把它们分割成整数。下面是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=' ')

列表元素应该以直线形式打印。

转换为整数:

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

浮点数也类似:

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

虽然在你的例子中,int(input(…))在任何情况下都是有效的,但python-future的内置。input是值得考虑的,因为它可以确保你的代码适用于Python2和python3,并禁用Python2的默认输入行为,试图“聪明”地处理输入数据类型(内置。Input基本上就像raw_input)。

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

input() (Python 3)和raw_input() (Python 2)总是返回字符串。使用int()显式地将结果转换为整数。

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