Python 在测试用例中不在循环中输入x的原因,显示;以10为基数的int()的文本无效:';5.4.2.1'&引用;

Python 在测试用例中不在循环中输入x的原因,显示;以10为基数的int()的文本无效:';5.4.2.1'&引用;,python,arrays,Python,Arrays,我正在数组中插入值,但x=int(input())显示了以10为基数的int()的eithr EOF错误或无效文字:“5 4 2 1” arr = array('i',[]) n = int(input("enter the length of array")) print(n) for i in range(n): x = int(input()) arr.append(x) 你会得到这样的数组 import array as arr arr = arr.array('i'

我正在数组中插入值,但x=int(input())显示了以10为基数的int()的eithr EOF错误或无效文字:“5 4 2 1”

arr = array('i',[])
n = int(input("enter the length of array"))
print(n)

for i in range(n):
    x = int(input())
    arr.append(x)
你会得到这样的数组

import array as arr
arr = arr.array('i',[])
n = int(input("enter the length of array"))
print(n)
listt=(list(map(int,input().split())))
for i in listt:
    arr.append(i)
print(arr)

input.split()将“5 6 7 8”转换为['5'、'6'、'7'、'8'],映射到int将其转换为[5,6,7,8]

如果出现错误消息,您将在一行中输入所有数字,用空格分隔,然后按“enter”键,因此
input()
返回字符串
“5 4 2 1”
,这确实不是整数的有效表示形式

考虑到您的代码是如何编写的,简单的解决方案是只需输入一个值,点击“回车”键,输入第二个值,点击“回车”键,涂抹泡沫,冲洗,重复。。。通过将提示字符串传递给
input()
,可以更清楚地说明此期望,即:

for i in range(n):
    x = int(input("enter value #{} and hit enter".format(i+1)))
    arr.append(x)
现在,如果您希望您的代码相当健壮,那么您希望正确处理错误的用户输入:

def get_integer_input(prompt):
    while True:
        value = input(prompt).strip()
        try:
            return int(value)
        except ValueError:
            print("sorry, '{}' is not a valid integer".format(value))

然后在代码段中,通过调用此函数替换所有
int(input(…)
调用

您必须首先拆分或使用映射。这可能比竞争性答案更接近OP想要的结果,但您确实应该添加一个解释,以便为Python新手解包。
def get_integer_input(prompt):
    while True:
        value = input(prompt).strip()
        try:
            return int(value)
        except ValueError:
            print("sorry, '{}' is not a valid integer".format(value))