如何处理错误,没有足够的值来解压 for 循环
how to handle error not enough values to unpack in for loop
在下面的代码中,用户将输入单个整数 N
作为他接下来应该输入的对数 b
。假设输入的列表是 b=[('r', 1),('a', 1),('a', 2),('a', 1),('r', 1),('r', 2)]
,输出应该是 B=[1]。用户将输入如下数据:
6
r 1
a 1
a 2
a 1
r 1
r 2
引发错误的代码:'not enough values to unpack (expected 2, got 1)'
N = int(input())
B=[]
for i in range(N):
b = (input().split())
for (action, value) in b:
if action == 'a':
B.append(value)
elif action == 'r':
try:
B.remove(value)
except ValueError:
pass
您正在尝试迭代一组值,将每个项目解包到多个变量中。为此,您需要有一个二维数组(第一维用于遍历数组,第二维用于解压值)。
您正在尝试循环访问用户输入的最后一个值。在您的情况下,它是 r 2
,它被拆分为 ['r', '2']
。在第一次迭代中,您试图将 'r'
解包为 2 个变量,这是无法完成的。
相反,您应该在用户输入值时将其解包。
N = int(input())
B=[]
for i in range(N):
b = (input().split())
action, value = b
if action == 'a':
B.append(value)
elif action == 'r':
try:
B.remove(value)
except ValueError:
pass
或者使用数组存储输入:
N = int(input())
B=[]
inputs = []
for i in range(N):
b = (input().split())
inputs.append(b)
for action, value in inputs:
if action == 'a':
B.append(value)
elif action == 'r':
try:
B.remove(value)
except ValueError:
pass
如果您想创建列表,您应该首先将用户输入作为元组附加到列表中 'b',然后遍历它并像这样处理操作:
N = int(input())
B=[]
b = []
for i in range(N):
user_input = input().split() # this returns a list
b.append(tuple(user_input)) # append user input as a tuple
# Handle actions here
for (action, value) in b:
if action == 'a':
B.append(value)
elif action == 'r':
try:
B.remove(value)
except ValueError:
pass
在下面的代码中,用户将输入单个整数 N
作为他接下来应该输入的对数 b
。假设输入的列表是 b=[('r', 1),('a', 1),('a', 2),('a', 1),('r', 1),('r', 2)]
,输出应该是 B=[1]。用户将输入如下数据:
6
r 1
a 1
a 2
a 1
r 1
r 2
引发错误的代码:'not enough values to unpack (expected 2, got 1)'
N = int(input())
B=[]
for i in range(N):
b = (input().split())
for (action, value) in b:
if action == 'a':
B.append(value)
elif action == 'r':
try:
B.remove(value)
except ValueError:
pass
您正在尝试迭代一组值,将每个项目解包到多个变量中。为此,您需要有一个二维数组(第一维用于遍历数组,第二维用于解压值)。
您正在尝试循环访问用户输入的最后一个值。在您的情况下,它是 r 2
,它被拆分为 ['r', '2']
。在第一次迭代中,您试图将 'r'
解包为 2 个变量,这是无法完成的。
相反,您应该在用户输入值时将其解包。
N = int(input())
B=[]
for i in range(N):
b = (input().split())
action, value = b
if action == 'a':
B.append(value)
elif action == 'r':
try:
B.remove(value)
except ValueError:
pass
或者使用数组存储输入:
N = int(input())
B=[]
inputs = []
for i in range(N):
b = (input().split())
inputs.append(b)
for action, value in inputs:
if action == 'a':
B.append(value)
elif action == 'r':
try:
B.remove(value)
except ValueError:
pass
如果您想创建列表,您应该首先将用户输入作为元组附加到列表中 'b',然后遍历它并像这样处理操作:
N = int(input())
B=[]
b = []
for i in range(N):
user_input = input().split() # this returns a list
b.append(tuple(user_input)) # append user input as a tuple
# Handle actions here
for (action, value) in b:
if action == 'a':
B.append(value)
elif action == 'r':
try:
B.remove(value)
except ValueError:
pass