以下代码不模拟输入,是否可以使用生成器来模拟输入?
inputlist = [5,1,2,3,4,5,6]
def mock_input(dummy_prompt=">>> "):
global inputlist
for u in inputlist:
yield str(u)
__builtins__.input = mock_input
l=[]
x= input()
for u in range(int(x)):
l.append(int(input()))
if l==inputlist[1:]:
print("bravo")
错误是x是生成器而不是String。
我是否必须使用全局变量创建自己的生成器,还是错过了语法。
最佳答案
您是将生成器分配给__builtins__.input
而不是使用生成器进行迭代并返回值,这就是为什么它不起作用的原因。
而是使用iter
创建一个generate,然后使用next(..)
对其进行迭代
inputlist = [6,1,2,3,4,5,6]
gen = iter(inputlist)
def mock_input(dummy_prompt=">>> "):
return str(next(gen))
__builtins__.input = mock_input
l=[]
x= input()
for u in range(int(x)):
l.append(int(input()))
if l==inputlist[1:]:
print("bravo")
PS:我将列表的第一个数字修改为6,否则您丢失了一个项目并且bravo没有打印
关于python - 用生成器模拟输入,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37595414/