[英]Python3 print statement prints 0 instead of the actual return value of the function
我正在做 AOC 2020,我看到 python3 print 语句有些奇怪,我不明白发生了什么。
这个问题是第 6 天第 1 部分,假设计算文件中的一堆字符并基本上找出计算了多少。
这是我下面的代码,当我在 Win 10 中的 Pycharm 2020.3 和 Python 3.5 上运行它时,这两个打印语句给出了截然不同的结果:
print(a)
行给了我我所期望的,从 process_customs_data 返回的值。 print(process_customs_data(customs_data))
给了我 0 这没有意义不应该打印 function 的返回值吗?
作为一项额外的测试,我将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
不同,那么只需查看您在调用 function 之前更新了 function 参数customs_data = ''
。
在您的 function process_customs_data(data)
中,您创建一个set
,其中包含字符串中所有可能的不同字符。 对于带有空data
的调用,它将是空集,因此空集的len
为 0。并且print
打印出这个 0。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.