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

Python调用营收报表自定义函数写入txt文件内容为None原因求解

营收报告写入文件得到None的问题原因及解决方案

核心原因

  • Python的函数默认规则:如果没有显式写return语句指定返回内容,函数执行结束后默认返回None。你写的第一个revenue_report函数只有print语句,没有做返回值的定义,所以调用这个函数拿到的结果就是None,你把None转成字符串写入文件,自然只得到None内容。
  • 你混淆了print的作用和函数返回值的作用:print只是把内容输出到终端控制台,打印完内容就消失了,不会把打印的内容保存下来传给调用方,你之前的写法相当于想把屏幕上打印的内容直接存进文件,但代码逻辑里根本没做把内容拼接保存的操作。

整改方案

首先修改第一个文件Task63a.py,让revenue_report函数支持接收文件名参数,先把报表内容拼接成完整字符串,再写入指定文件:

def revenue_report(filename):
    # 获取三个月营收数据
    revenue1 = float(input("Enter revenue for month 1: "))
    revenue2 = float(input("Enter revenue for month 2: "))
    revenue3 = float(input("Enter revenue for month 3: "))
    sum2 = revenue1 + revenue2
    sum3 = revenue1 + revenue2 + revenue3
    # 拼接完整的报表内容,不要直接print
    report_content = f'''
Revenue Report
--------------------------
Revenue for 1: $     {revenue1:,.2f} | Cumm. Total: $     {revenue1:,.2f}
Revenue for 2: $     {revenue2:,.2f} | Cumm. Total: $     {sum2:,.2f}
Revenue for 3: $     {revenue3:,.2f} | Cumm. Total: $     {sum3:,.2f}
The company has made a total of ${sum3:,} in revenue in the past quarter.
    '''
    # 将内容写入传入的指定文件
    with open(filename, "w", encoding="utf-8") as f:
        f.write(report_content)
    # 如果需要同时在控制台显示报表可以加这行
    print(report_content)

再修改第二个文件的代码,直接调用函数传入文件名即可:

import Task63a

# 传入要保存的文件名,执行后报表就会写入该文件
Task63a.revenue_report("revenue_report.txt")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 22:24:02