使用forloop从指定列表中进行选择(无whileloops)

2024-10-01 15:42:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望对for循环执行相同的操作

menu=['salad','becon','pizza','burger','fries']

choosen_menu=''
while choosen_menu not in menu:
    print('choose something')
    choosen_menu= input()
    if choosen_menu == 'None':
        print('not hungry')
        break
else:
    print('the {} is arriving'.format(choosen_menu))

Tags: inforinputnotsomethingmenuburgerprint
2条回答

我不建议在您的案例中使用for loop,但这将为您提供您想要的:

from itertools import count
menu=['salad','becon','pizza','burger','fries']

choosen_menu=''


for i in count(0):
    print('choose something')
    choosen_menu= input()
    if choosen_menu == 'None':
        print('not hungry')
        break
    elif choosen_menu not in menu:
        pass
    else:
        print('the {} is arriving'.format(choosen_menu))
        break

while循环在概念上似乎适合您的用例,但如果您真的愿意,可以将其转换为等效的for循环:

from functools import partial
menu = {'salad', 'bacon', 'pizza', 'burger', 'fries'}
for chosen in iter(partial(input, 'choose something\n'), 'None'):
    if chosen in menu:
        print('the {} is arriving'.format(chosen))
        break
else:
    print('not hungry')

这使用了一些高级概念,如iter()的两参数形式(很少使用)和partial函子(用于部分应用函数),因此这实现的唯一一点是使代码更难阅读。否则,它或多或少与您的原始版本完全相同,具有相同的可用性问题

相关问题 更多 >

    热门问题