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

Python程序中rand_nums()函数返回None的问题排查求助

问题分析与修复方案

1. rand_nums()返回None的核心原因

你在rand_nums()里把print()的结果赋值给了final,但**print()函数本身的返回值就是None**,所以函数最后return的自然是None,导致写入文件时出现"None"。

2. 代码中的其他问题

  • 文件写入的内容没有分隔符,众数字符串会直接拼接在一起,可读性极差
  • 使用全局列表存储随机数,代码耦合性高
  • statistics.mode()在列表中所有元素出现次数相同时会抛出StatisticsError(比如生成5个不重复的数时)

修复后的代码

import statistics as stat
import random

def mean(list_x):
    '''计算列表平均值'''
    total = 0.0
    for i in list_x:
        total += i
    return total / len(list_x)

def generate_random_numbers():
    # 用局部列表存储,避免全局变量
    list_1 = []
    list_2 = []
    list_3 = []
    list_4 = []
    list_5 = []
    
    print("Column 1 Column 2 Column 3      Column 4             Column 5")
    # 准备要写入文件的随机数字符串
    file_content = ""
    for _ in range(5):
        num1 = random.randint(1, 1000)
        list_1.append(num1)
        num2 = random.randint(1, 10000)
        list_2.append(num2)
        num3 = random.randint(200, 5000)
        list_3.append(num3)
        num4 = random.randint(1, 200)
        list_4.append(num4)
        num5 = random.randint(100, 2000)
        list_5.append(num5)
        
        # 格式化打印内容
        line = f"{num1}\t{num2}\t\t{num3}\t\t\t{num4}\t\t\t\t{num5}\n"
        print(line.strip())
        # 把行内容加入到要写入文件的字符串中
        file_content += line
    
    # 返回要写入的内容和各个列表,方便后续计算众数
    return file_content, list_1, list_2, list_3, list_4, list_5

# 使用with语句自动管理文件,避免忘记关闭
with open("genericFile/storage.txt", "w") as f:
    rand_content, l1, l2, l3, l4, l5 = generate_random_numbers()
    # 写入随机数内容
    f.write(rand_content)
    f.write("\n--- 各列众数 ---\n")
    
    # 处理众数可能不存在的情况
    def safe_mode(lst):
        try:
            return str(stat.mode(lst))
        except stat.StatisticsError:
            return "无唯一众数"
    
    # 写入各列众数,带说明
    f.write(f"列1众数: {safe_mode(l1)}\n")
    f.write(f"列2众数: {safe_mode(l2)}\n")
    f.write(f"列3众数: {safe_mode(l3)}\n")
    f.write(f"列4众数: {safe_mode(l4)}\n")
    f.write(f"列5众数: {safe_mode(l5)}\n")

关键修复点说明

  • 取消print()的赋值操作,改用字符串拼接生成要写入文件的内容,函数返回实际需要写入的文本和各个列表
  • 使用with语句操作文件,自动关闭文件,避免资源泄漏
  • 添加safe_mode函数处理无唯一众数的异常情况
  • 用局部列表替代全局列表,降低代码耦合
  • 写入文件时添加分隔符和说明文字,提升可读性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 13:57:34