def start_when(iterable,p):
s = ''
a = ''
x = iter(iterable)
for y in x:
a = a + y
try:
for y in x:
if p(y) == True:
s = s + a[a.index(y):]
break
except StopIteration:
pass
return s
start_when生成器将iterable和谓词作为参数:它从iterable中生成每个值,从谓词返回True的第一个值开始
例如:
for i in start_when('combustible', lambda x : x >= 'q’):
print(i,end='')
打印
ustible
然而,当我的函数接受输入
时('abcdefghijk', lambda x : x >='d')])
它应该返回
defghijk
但它没有返回任何内容
下面是我得到的错误:
21 *Error: ''.join([str(v) for v in start_when('abcdefghijk', lambda x : x >='d')]) -> but should -> defghijk
22 *Error: ''.join([str(v) for v in start_when(hide('abcdefghijk'), lambda x : x >='d')]) -> but should -> defghijk
23 *Error: ''.join([str(v) for v in start_when(hide('abcdefghijk'), lambda x : x >'f')]) -> but should -> ghijk
有人可以帮助我修复我的功能吗?非常感谢!
答案 0 :(得分:0)
那么你的方法根本不是一个生成器方法。以下生成器方法将完美地为您服务:
def start_when(iterable,p):
x=iter(iterable)
for y in x:
if p(y):
yield y
break
for y in x:
yield y
并将其称为:
for i in start_when('abcdefghijk', lambda x : x >='d'):
print(i,end='')