python - Python3 print 语句打印 0 而不是函数的实际返回值
问题描述
我正在做 AOC 2020,我看到 python3 print 语句有些奇怪,我不明白发生了什么。
这个问题是第 6 天第 1 部分,假设计算文件中的一堆字符并基本上找出计算了多少。
这是我下面的代码,当我在 Win 10 和 Python 3.5 的 Pycharm 2020.3 上运行它时,这两个打印语句给出了截然不同的结果:
该print(a)
行给出了我期望的值,即从 process_customs_data 返回的值。给我 0这print(process_customs_data(customs_data))
没有意义不应该打印函数的返回值吗?
就像我改变的额外测试一样total_count =total_count + a
,total_count =total_count + process_customs_data(customs_data)
两种情况都有效。我可以看到我的总数已正确更新。
import pprint
from aocd.models import Puzzle
from aocd import submit
import time
def process_customs_data(data):
pprint.pprint(set(data))
return len(set(data))
puzzle = Puzzle(year=2020, day=6)
raw = puzzle.input_data
data = raw.splitlines()
total_count = 0
customs_data = ""
for line in data:
if line == '':
a = process_customs_data(customs_data)
total_count =total_count + a
customs_data = ''
print(a)
print(process_customs_data(customs_data))
time.sleep(5)
else:
customs_data = customs_data + line.strip()
print(total_count)
#submit(total_count, part="a", day=6, year=2020)
解决方案
您print(process_customs_data(customs_data))
的命令打印表达式的实际返回值process_customs_data(customs_data)
。
如果您想知道为什么这与 不同a
,那么只需customs_data = ''
在调用函数之前查看您更新了函数参数。
在您的函数中process_customs_data(data)
,您创建一个set
包含字符串中所有可能的不同字符的函数。对于空的调用,data
它将是空集,因此len
空集的 为 0。并print
打印此 0。
推荐阅读
- vba - XCOPY:源文件夹是否可能包含目标文件夹?
- laravel - docker-compose:如何在 docker 网络内外使用 minio
- c++ - 调试器看到的输出线程 ID
- amazon-web-services - aws cognito 不会获取所有用户
- javascript - React Native 异步 Jest 组件测试
- swift - Swift 协议:属性是某个类的子类,而不是该类的子类
- python - 如何在 Python 函数中执行 QWebEngine
- php - 如何使 wordpress 小部件容器全宽
- java - 测试方法通过空指针异常
- xpath - 使用 \n 和空格查找类名的 xpath