我想编写一个代码,该代码应获得如下输入:
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具有字符串,并且它们彼此无关!请帮助说明为什么会发生,如何解决?
答案 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
循环以继续询问,并提示是否给出错误的单词数。