Python课程作业疑问:为何执行代码后输出None?
问题:Python列表append操作输出None的原因及解决办法
作业要求
如果水果不在列表中,就将该水果添加到列表并打印修改后的列表;如果水果已存在,则打印'That fruit already exist in the list'。
你的代码
fruits = ['banana', 'orange', 'mango', 'lemon'] fruit_dennis = 'apple' if fruit_dennis in fruits : print ('That fruit already exist in the list') else: print (fruits .append (fruit_dennis) )
为什么会输出None?
Python的列表append()方法是原地修改原列表,它本身没有返回值(或者说返回None)。你在else分支里直接print(fruits.append(fruit_dennis)),本质是打印这个方法的返回值,所以会输出None。
而你单独执行fruits.append('apple')再打印列表正常,是因为append已经悄悄修改了原列表,此时你打印的是列表本身,而非append的返回值。
正确写法
把append和print分开执行,先修改列表再打印列表内容:
fruits = ['banana', 'orange', 'mango', 'lemon'] fruit_dennis = 'apple' if fruit_dennis in fruits: print('That fruit already exist in the list') else: fruits.append(fruit_dennis) print(fruits)
如果想追求一行写法(不推荐,可读性差),也可以通过生成新列表的方式打印,但这种方式不会修改原列表:
else: print(fruits + [fruit_dennis])
内容的提问来源于stack exchange,提问作者Dennis08
相关产品推荐
相关产品推荐

