输出与我预期的不同

2024-05-23 22:46:47 发布

您现在位置: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')

没有错误。你知道吗


Tags: in列表not语句购物listbananaprint
3条回答

我想这就是你想要做的:

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

在您的代码中,您循环浏览购物车列表并检查该项目(当然是这样),因此它只会打印一堆“Done”

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')

您的问题是您对代码的工作原理有误解。
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')

相关问题 更多 >