如何修复'ValueError:以10为基数的int()无效文字:'

时间:2019-08-09 08:55:30

标签: python python-3.x

我想编写一个代码,该代码应获得如下输入:

4
n hgh hjhgj jhh
1
jghj
3

code应该得到一个整数n,然后得到第n个字符串。

i =0
A=[[],[],[]]
while i < 3:
    j=0
    n=int(input())
    while j<n:
        A[i].append((input()))
        j+=1     
    i+=1

我希望它可以运行,但是会出现如下错误: 以10为底的int()的无效文字:'hj jhg hj' 我无法理解这个问题,因为n是一个整数,A具有字符串,并且它们彼此无关!请帮助说明为什么会发生,如何解决?

1 个答案:

答案 0 :(得分:2)

您错误地输入了您的输入,您的代码希望您将字符串输入到不同的输入中,而不是一行中。为了确保输入的内容是正确的,您可以在input中输入文本,使其显示在控制台中:

i =0
A=[[],[],[]]
while i < 3:
    j=0
    n=int(input("n: "))
    while j<n:
        A[i].append((input("> ")))
        j+=1     
    i+=1
print(A)

这给出了:

n: 4
> n
> hgh
> hjhgj
> jhh
n: 1
> jghj
n: 3
> a
> b
> c
[['n', 'hgh', 'hjhgj', 'jhh'], ['jghj'], ['a', 'b', 'c']]

此外,当您知道循环将要迭代多少次时,可以使用while而不是for,就像这样:

A = []
for i in range(3):
    n = int(input("n: "))
    temp = []
    for j in range(n):
        temp.append(input("> "))
    A.append(temp)
print(A)

它给您相同的结果;)


编辑:

根据@kabanus的假设,如果您实际上想要那种输入,则需要分割给定的字符串:

A = []
for i in range(3):
    n = int(input("n: "))
    while True:
        words = input("> ").split()
        if len(words) == n:
          break
        print(f"You gave {len(words)} words, you must give {n} words! Try again.")
    A.append(words)
print(A)

这给出了:

n: 4
> n hgh hjhgj jhh
n: 1
> jghj
n: 3
> a b c
[['n', 'hgh', 'hjhgj', 'jhh'], ['jghj'], ['a', 'b', 'c']]

添加了一个while循环以继续询问,并提示是否给出错误的单词数。