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

多次调用函数时如何将随机生成值追加至同一列表?

解决方案:实现随机数累积存储的功能

原代码的核心问题是每次调用randnum()都会重新初始化add_rand_num列表,且递归调用时新的函数实例使用独立的列表,导致无法保留之前生成的特定随机数。以下提供两种可行的修正方案:

方案一:使用全局变量

将存储列表定义为全局变量,确保所有函数调用都操作同一个列表:

import random
import time

# 全局列表,用于累积存储每次生成的特定随机数
add_rand_num = []

def randnum():
    global add_rand_num
    # 输出10个随机浮点数
    for x in range(10):
        print(random.uniform(.0005, .5))
        time.sleep(.5)
    print("----------------------")
    # 生成并存储特定随机数
    num = random.uniform(.0005, .5)
    print(num)
    add_rand_num.append(num)
    
    while True:
        redo = input("Would you like to generate another num? Enter Y for YES or N for NO: ")
        if redo == "Y":
            randnum()
            break
        elif redo == "N":
            # 输出求和结果及所有存储的数字
            print(f"The sum of the numbers you generated is {sum(add_rand_num)}! ")
            print(f"All stored numbers: {add_rand_num}")
            break
        else:
            print("Please enter either Y for YES or N for NO")

randnum()

方案二:使用函数默认参数(避免全局变量)

通过函数参数传递列表,利用默认参数实现首次调用的初始化,后续调用传递已有数据的列表:

import random
import time

def randnum(add_rand_num=None):
    # 首次调用时初始化空列表
    if add_rand_num is None:
        add_rand_num = []
    # 输出10个随机浮点数
    for x in range(10):
        print(random.uniform(.0005, .5))
        time.sleep(.5)
    print("----------------------")
    # 生成并存储特定随机数
    num = random.uniform(.0005, .5)
    print(num)
    add_rand_num.append(num)
    
    while True:
        redo = input("Would you like to generate another num? Enter Y for YES or N for NO: ")
        if redo == "Y":
            # 递归调用时传递当前列表
            randnum(add_rand_num)
            break
        elif redo == "N":
            print(f"The sum of the numbers you generated is {sum(add_rand_num)}! ")
            print(f"All stored numbers: {add_rand_num}")
            break
        else:
            print("Please enter either Y for YES or N for NO")

randnum()

额外修正说明

原代码中存在一个逻辑错误:用户选择N时,原代码直接输出了列表而非求和结果,上述方案已修正为sum(add_rand_num),同时增加了输出所有存储数字的功能,方便验证累积效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 12:25:30