使用多个列表的Python

2024-05-20 19:22:38 发布

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

为什么这个程序不起作用?你知道吗

available_toppings = ["mushrooms", "olives", "green peppers", "pepperoni", "pineapple", "extra cheese"]

requested_toppings = ['mushrooms', 'olives', 'extra cheese']

if requested_toppings in available_toppings:
    for requested_topping in requested_toppings:
        print("Adding " + requested_topping.title() + ".")
    print("Finalising your order.")

else:
    print("sorry we dont have these toppings")

输出为

sorry we dont have these toppings

Tags: inhaveextraavailableweprintdonttoppings
3条回答

您想检查requested_toppings列表是否是available_toppings的子集。你知道吗

您可以使用set.issubset()函数。你知道吗

available_toppings = ["mushrooms", "olives", "green peppers", "pepperoni", "pineapple", "extra cheese"]

requested_toppings = ['mushrooms', 'olives', 'extra cheese']

if set(requested_toppings).issubset(available_toppings):
    for requested_topping in requested_toppings:
        print("Adding " + requested_topping.title() + ".")
    print("Finalising your order.")

else:
    print("sorry we dont have these toppings")

这将导致

Adding Mushrooms.
Adding Olives.
Adding Extra Cheese.
Finalising your order.

如果你用requested_toppings中的shrimps替换olives,你会得到

sorry we dont have these toppings

一如预期。你知道吗

看起来您切换了for循环和if条件的顺序。也许你想要的是:

  • 对于每个请求的浇头,检查是否有可用的浇头

您可以尝试以下操作,而不是检查整个请求的列表是否在其他可用列表中:

available_toppings = ["mushrooms", "olives", "green peppers", "pepperoni", "pineapple", "extra cheese"]

requested_toppings = ['mushrooms', 'olives', 'extra cheese']

for requested_topping in requested_toppings:
    if requested_topping in available_toppings:
        print("Adding " + requested_topping.title() + ".")
    else:
        print("sorry we dont have these toppings")

print("Finalising your order.")

python中有两个漂亮的函数,all()any()。尝试使用all()

available_toppings = ["mushrooms", "olives", "green peppers", "pepperoni", "pineapple", "extra cheese"]

requested_toppings = ['mushrooms', 'olives', 'extra cheese']

if all(topping in available_toppings for topping in requested_toppings):
    for requested_topping in requested_toppings:
        print("Adding " + requested_topping.title() + ".")
    print("Finalising your order.")

else:
    print("sorry we dont have these toppings")

你的代码怎么了?检查list是否是另一个list的元素,如:

>>> [1,2] in [1,2,3]
False
>>> [1,2] in [[1,2],3]
True

相关问题 更多 >