You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python列表转字典练习代码运行结果底部出现'none'求助

问题原因及解决办法

嘿,作为《Python编程快速上手》(Automate the boring stuff with python)的学习者,你这段代码的功能逻辑其实没问题,只是在函数调用的地方踩了个小坑~

为什么会出现None?

你的函数addToInventory内部已经完成了所有的打印操作,但函数没有显式的return语句。在Python中,任何没有返回值的函数都会默认返回None。而你最后一行代码用print(addToInventory(inv, dragonLoot)),相当于:

  1. 先执行函数里的所有打印逻辑,输出库存信息
  2. 再打印这个函数的返回值(也就是默认的None)

所以结果底部才会出现这个多余的None。

两种解决方法

方法一:直接调用函数(最简便)

把最后一行的代码从:

print(addToInventory(inv, dragonLoot))

改成:

addToInventory(inv, dragonLoot)

这样就只会执行函数内部的打印内容,不会额外输出函数的返回值了。

方法二:给函数添加返回值(可选)

如果你希望函数能返回更新后的库存字典,同时保留内部的打印逻辑,可以在函数末尾加上return语句:

def addToInventory(inventory, addedItems):
    for i in addedItems:
        if i == 'gold coin':
            inventory['gold coin'] += 1
        else:
            inventory.setdefault(i, 0)
            inventory[i] += 1
    print('Inventory:')
    total_item = 0
    for k, v in inventory.items():
        print(str(v) + ' ' + k)
        total_item += v
    print('\nTotal number of items: ' + str(total_item))
    return inventory  # 添加返回语句

inv = {'gold coin': 42, 'rope': 1}
dragonLoot = ['gold coin', 'dagger', 'gold coin', 'gold coin', 'ruby']
addToInventory(inv, dragonLoot)  # 直接调用即可

这样就算你不小心用了print(addToInventory(...)),也会打印出更新后的库存字典,而不是None。不过更推荐第一种方法,因为函数已经负责输出内容了,没必要再用print包裹调用。

内容的提问来源于stack exchange,提问作者user109503

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 19:52:54