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

如何在Python中持续将函数运行结果存入列表?

解决方案

针对你的需求,这里提供两种简洁的实现方式,都能满足每次运行猜数字游戏后自动保存结果,并且随时查看历史记录的要求:

方法1:使用全局列表(快速修改现有代码)

把结果列表定义为全局变量,在guessing_game函数内直接更新这个列表,改动量小,适合入门阶段快速实现:

import random  # 建议把import放在函数外面,避免重复导入

# 定义全局列表存储游戏结果
game_results = []

def guessing_game():
    number = random.randint(1, 1000)
    player_name = input("Enter name: ")
    number_of_guesses = 0

    # 修复字符串拼接的空格问题,用f-string更简洁
    print(f'Howdy, {player_name}! Guess a number between 1 and 1000: ')

    while number_of_guesses < 10:
        guess = int(input())
        number_of_guesses += 1
        if guess < number:
            print("Too Low, Joe")
        elif guess > number:
            print("Too high, Sly")
        else:
            break

    # 整理结构化的游戏结果
    if guess == number:
        result_msg = f"You got it, Bobbit, in {number_of_guesses} tries"
        result = {"player": player_name, "status": "win", "tries": number_of_guesses, "target": number}
    else:
        result_msg = f"Well, yer were close, Stofe. Shoulda guessed {number}"
        result = {"player": player_name, "status": "lose", "tries": number_of_guesses, "target": number}
    
    print(result_msg)
    # 将结果添加到全局列表
    game_results.append(result)

# 运行游戏
guessing_game()
# 需要查看历史时直接打印列表
print("游戏历史记录:")
print(game_results)

方法2:函数返回结果,外部维护列表(更规范的写法)

让guessing_game返回每次的游戏结果,在函数外部自己维护结果列表,这种方式不依赖全局变量,代码更模块化:

import random

def guessing_game():
    number = random.randint(1, 1000)
    player_name = input("Enter name: ")
    number_of_guesses = 0

    print(f'Howdy, {player_name}! Guess a number between 1 and 1000: ')

    while number_of_guesses < 10:
        guess = int(input())
        number_of_guesses += 1
        if guess < number:
            print("Too Low, Joe")
        elif guess > number:
            print("Too high, Sly")
        else:
            break

    if guess == number:
        result_msg = f"You got it, Bobbit, in {number_of_guesses} tries"
        result = {"player": player_name, "status": "win", "tries": number_of_guesses, "target": number}
    else:
        result_msg = f"Well, yer were close, Stofe. Shoulda guessed {number}"
        result = {"player": player_name, "status": "lose", "tries": number_of_guesses, "target": number}
    
    print(result_msg)
    # 返回结构化结果
    return result

# 外部定义列表存储结果
game_results = []
# 运行游戏并保存结果
game_results.append(guessing_game())
# 可以多次运行游戏
game_results.append(guessing_game())

# 格式化打印历史记录
print("游戏历史记录:")
for idx, res in enumerate(game_results, 1):
    print(f"第{idx}次游戏:玩家{res['player']} {'成功猜对' if res['status'] == 'win' else '未猜对'},目标数字{res['target']},尝试次数{res['tries']}")

关键细节说明

  • 用字典存储结果比单纯存字符串更易读,后续还能轻松扩展记录内容(比如游戏时间、玩家猜测的数字序列等)。
  • 原代码里的import random放在函数内会导致每次调用都重复导入,移到函数外更高效。
  • 用f-string替换原有的+字符串拼接,能避免空格缺失这类小问题,写法也更简洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 15:15:36