Collections.deque() EOFError: EOF when reading a line
Collections.deque() EOFError: EOF when reading a line
此step方法出现EOF错误,移除try块时出现val = input().split(' ')值错误
from collections import deque
n = int(input())
d = deque()
for _ in range(n):
try:
method, val = input().split(' ')
if method == 'append':
d.append(val)
if method == 'appendleft':
d.appendleft(val)
except ValueError:
a = input()
if str(a) == 'pop':
d.pop()
else:
d.popleft()
print(d)
给定的输入是:
6
append 1
append 2
append 3
appendleft 4
pop
popleft
你遇到问题是因为你在 except
中使用 input()
所以在一个循环中它读取两行 - 第一行在 try
中然后在 except
中 - 所以最后你少行。
错误 ValueError
由 method, val = ...
引发,它在 input()
之后执行 - 因此该行已从缓冲区中删除,并且缓冲区中的行更少。当您在 except
中运行下一个 input()
时,它不会读取同一行而是读取下一行 - 所以您在一个循环中得到太多行。
您应该首先读取行并分配给单个变量,然后您应该尝试将其拆分为两个变量。
line = input()
try:
method, val = line.split(' ')
# ... code ...
except ValueError:
method = line
# ... code ...
而不是try/except你可以先分割线并分配给单个变量
#args = input().strip().lower().split(' ')
args = input().split(' ')
稍后检查 len(args)
args = input().strip().lower().split(' ')
if len(args) == 2:
method = args[0]
val = args[1]
# ... code ...
elif len(args) == 1:
method = args[0]
# ... code ...
else:
print('Wrong number of arguments')
此step方法出现EOF错误,移除try块时出现val = input().split(' ')值错误
from collections import deque
n = int(input())
d = deque()
for _ in range(n):
try:
method, val = input().split(' ')
if method == 'append':
d.append(val)
if method == 'appendleft':
d.appendleft(val)
except ValueError:
a = input()
if str(a) == 'pop':
d.pop()
else:
d.popleft()
print(d)
给定的输入是:
6
append 1
append 2
append 3
appendleft 4
pop
popleft
你遇到问题是因为你在 except
中使用 input()
所以在一个循环中它读取两行 - 第一行在 try
中然后在 except
中 - 所以最后你少行。
错误 ValueError
由 method, val = ...
引发,它在 input()
之后执行 - 因此该行已从缓冲区中删除,并且缓冲区中的行更少。当您在 except
中运行下一个 input()
时,它不会读取同一行而是读取下一行 - 所以您在一个循环中得到太多行。
您应该首先读取行并分配给单个变量,然后您应该尝试将其拆分为两个变量。
line = input()
try:
method, val = line.split(' ')
# ... code ...
except ValueError:
method = line
# ... code ...
而不是try/except你可以先分割线并分配给单个变量
#args = input().strip().lower().split(' ')
args = input().split(' ')
稍后检查 len(args)
args = input().strip().lower().split(' ')
if len(args) == 2:
method = args[0]
val = args[1]
# ... code ...
elif len(args) == 1:
method = args[0]
# ... code ...
else:
print('Wrong number of arguments')