为什么在下面的代码中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

当前回答

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

虽然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作为整数。

其他回答

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

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

虽然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作为整数。

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

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

如果数字已经知道,(比如2个整数),您可以使用

num1, num2 = map(int, raw_input().split())
n=int(input())
for i in range(n):
    n=input()
    n=int(n)
    arr1=list(map(int,input().split()))

for循环将运行'n'次。第二个“n”是数组的长度。 最后一条语句将整数映射到一个列表,并以空格分隔的形式接受输入。 你也可以在for循环的末尾返回数组。

在Python 3中。在Python 2. x中,raw_input被重命名为input。X输入被移除。

这意味着,就像raw_input一样,Python 3中的input。X总是返回一个字符串对象。

为了解决这个问题,你需要显式地将这些输入放入int中,使它们成为整数:

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