我的代码就快完成了,我想我需要做一些小的更改来返回所需的输出,但实际上我遇到了一个“编码器块”(如果有类似的情况)。 非常感谢您的帮助: 我的代码:
def no_you_pick(my_dict, my_list):
output = []
for i in my_list:
for k, v in my_dict.items():
if i in v:
output.append(k)
output.sort()
return output
else:
return "Sorry, no restaurants meet your restrictions"
grading_scale={'Moes, Larrys, Curlys': ['vegetarian', 'vegan', 'gluten-free'], 'Hot Chili Pepper': ['vegetarian', 'gluten-free', 'vegan']}
guests_diet = ["vegetarian", "vegan", "gluten-free"]
print(no_you_pick(grading_scale, guests_diet))
输出:
['Moes, Larrys, Curlys']
期望输出:
["Hot Chili Pepper", "Moes, Larrys, Curlys"]
PS:我还尝试按照嵌套for循环返回输出,但它返回[“Hot Chili Pepper”] *我不想使用列表理解,因为我不想在[]括号内打印else语句
您返回得太早(从循环内部),当然,您可以缩短此时间:
代码中的问题是返回找到的第一个值。不要忘记调用return退出函数。 一个解决方案是在forloop外部添加回流管
更简单的方法是:
您应该添加更多关于不同输入的示例。
首先,您在输出中只得到一个结果,因为您一找到匹配项就返回。
其次,如果他们的菜肴匹配多个输入,您应该避免多次添加结果:我认为输出应该是一个集合。
最后,如果需要列表,为什么要返回字符串?可以返回
[]
或{}
,但是您可以打印您的警告:相关问题 更多 >
编程相关推荐