初始化int列表。解释器返回“ ValueError:int()的乱码”

时间:2019-10-07 18:56:18

标签: python list

试图列出用户输入的整数。 Inerpreter返回“ ValueError:int()以10为底的无效文字:”

我是python的新手,我正在一个名为“ geeks for geeks”的网站上练习。链接到我正在研究的问题here 练习的目的是在用户指定大小的子数组中打印第一个负整数。当我尝试将用户输入追加到列表时,解释器给我一个值错误。显然这不是类型错误,但我无法弄清楚可以为程序提供什么样的输入来解决该错误。输入信息存储在geeks上用于geek服务器的文件中,因此我只能测试输入的内容。

# This file is for a programing practice exercise of geeksforgeerks.org
# The exercise is first negative int in window of size k

# selecting number of test cases
T = int(input())
for t in range(T):
    # initializing array
    n = int(input())
    arr = []
    while n > 0:
        arr.append(int(input().strip()))
        n-=1
    k = int(input())
    win = 0 # index of first element in widow subarray
    # terminate loop when the window can't extend further
    while win < len(array) - k -1:
        # boolean for no negatives found
        noNeg = True
        for i in range(win, k):
            if arr[i] < 0:
                print(arr[i])
                noNeg = False
                break
            elif i == k-1 and noNeg:
                # 0 if last sub arr index reached and found no negs
                print(0)
        win+=1

解释器在第11行给出以下错误:

print(int(input().strip()))
ValueError: invalid literal for int() with base 10: '-8 2 3 -6 10'

3 个答案:

答案 0 :(得分:1)

输入数据在同一行上包含多个数字。 input()返回整行输入,并且当您调用int(input().strip())时,您试图将整行解析为单个数字。

您需要在空格处将其分割。因此,您可以使用:

来代替while循环
arr = map(int, input().strip().split())

答案 1 :(得分:0)

好像您要输入多个整数,int()将不知道如何转换它们-期望字符串中包含一个整数。您将想要分割字符串然后进行转换:

Ts = [int(word) for word in input().strip().split(" ")]

请注意,这将为您提供列表,而不是单个整数。

答案 2 :(得分:0)

您将输入多个整数,您可以使用所需的值在第11行扩展数组:

arr = []
arr.extend(map(int, input().strip().split()))
# input: -8 2 3 -6 10

输出:

[-8, 2, 3, -6, 10]