输出与我预期的不同

时间:2019-08-08 07:35:31

标签: python

我为不同的水果创建了一个购物清单,并且输出应为“ not done”,因为根据以下声明它为假:

shopping_cart = ['apples', 'oranges', 'banana', 'kiwi', 'avocado', 'peaches']
s_list = list(shopping_cart)
for mango in s_list:
    if mango in shopping_cart:
        print('Done')
    else:
        print('not done')

没有错误。

3 个答案:

答案 0 :(得分:2)

shopping_cart = ['apples', 'oranges', 'banana', 'kiwi', 'avocado', 'peaches']
s_list = list(shopping_cart) # shopping_cart is already list so you can ignore it. 
if 'mango' in s_list:
    print('Done')
else:
    print('Not Done')

答案 1 :(得分:2)

我认为这是您要尝试做的事情:

shopping_cart = ['apples', 'oranges', 'banana', 'kiwi', 'avocado', 'peaches']
if 'mango' in shopping_cart:
    print('Done')
else:
    print('Not done')

在您的代码中,您正在浏览购物车列表,并检查是否有该商品(当然是这样),因此它只会打印一堆“完成”

答案 2 :(得分:2)

您的问题是您对代码的工作方式有误解。
for mango in s_list创建一个名为mango的占位符变量,然后在迭代过程中为其分配s_list中每个项目的值。由于当前为mango值的项目始终在列表中,因此该部分if mango in shopping_cart始终为true。
此代码将检查每个项目是否为芒果:

shopping_cart = ['apples', 'oranges', 'banana', 'kiwi', 'avocado', 'peaches']
s_list = list(shopping_cart)

for item in s_list:
    if item == 'mango':
        print('Done')
    else:
        print('Not done')

如果您只想知道购物车中是否有芒果,则可以跳过循环并按以下步骤操作:

if 'mango' in shopping_cart:
    print('Done')
else:
    print('Not done')