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

Python代码未用print()却输出数值的问题求助

问题解析:莫名出现的0是怎么来的?

嘿,这个问题我刚学Python的时候也踩过坑!咱先搞清楚为啥会冒出来这些0:

你是在**Python交互式命令行(比如IDLE或者终端里的Python Shell)**里运行的代码对吧?这个环境有个特性:每一行单独的表达式执行后,它的返回值会被自动打印出来——哪怕你没写print()!

罪魁祸首:setdefault()的返回值

你代码里的found.setdefault(letter, 0)这个方法,行为是这样的:

  • 如果letter还没在found字典里,它会把这个键加进去,值设为0,同时返回这个0
  • 如果letter已经存在,它会返回这个键当前的值

在你输入的"Sample Word"里,元音字母是a、e、o——第一次处理这三个字母时,setdefault都会返回0,而交互式Shell自动把这些返回值打印出来了,这就是你看到的那三个0的来源!

解决办法

有几个简单的方式可以去掉这些多余的0:

方法1:把setdefault的返回值“吃掉”

给它加个赋值,把返回值存到一个不用的变量里(比如用下划线_,这是Python里常用的“占位变量”),这样交互式Shell就不会自动输出了:

vowels = ['a', 'e', 'i', 'o', 'u']
word = input("Provide a word to look for vowels in it: ")
found = {}
for letter in word:
    if letter in vowels:
        _ = found.setdefault(letter, 0)  # 用变量接收返回值,避免自动打印
        found[letter] += 1

for k,v in sorted(found.items()):
    print(k,' was found ', v, ' times.')

方法2:用defaultdict替代普通字典

Python的collections模块里有个defaultdict,可以指定默认值,这样就不用手动调用setdefault了,代码更简洁,也不会有返回值的问题:

from collections import defaultdict

vowels = ['a', 'e', 'i', 'o', 'u']
word = input("Provide a word to look for vowels in it: ")
found = defaultdict(int)  # 所有新键默认值为0

for letter in word:
    if letter in vowels:
        found[letter] += 1  # 直接累加,不用先判断键是否存在

for k,v in sorted(found.items()):
    print(k,' was found ', v, ' times.')

方法3:把代码存成.py文件运行

如果把代码保存成.py文件,然后用python 文件名.py运行,就不会有这个问题了——因为非交互式环境只会执行代码里明确写的print()语句,不会自动输出表达式的返回值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:49:43