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

如何在Python中实现if判定成立累加分数、存文件及函数外访问

实现方案

直接改代码即可实现两个需求,不需要安装额外第三方库。

改造后完整可运行代码

原代码存在函数体无缩进的问题,运行会直接报错,改造时先修正缩进,再补全计分、记录返回值、本地存储逻辑:

import random
import string

def easyLevel():
    score = 0
    last_correct_pattern = ""
    n = 2
    while n <= 7:
        pattern = random.choice(string.ascii_lowercase)
        for i in range(n-1): 
            pattern = pattern + " " + random.choice(string.ascii_lowercase)
            
        print("The pattern is: ")
        print(pattern)

        easyAns = str(input("What was the pattern?: "))

        if easyAns == pattern:
            score += 5  # 答对累加5分
            last_correct_pattern = pattern  # 更新最后一次答对的pattern
            n = n + 1
            print("That's correct!")
        else:
            print("Sorry, that's incorrect.")
            break
    # 将需要外部使用的两个值作为返回值传出
    return score, last_correct_pattern

# 函数外部逻辑
if __name__ == "__main__":
    # 接收函数返回的得分、最后答对的pattern
    final_score, last_correct_pat = easyLevel()
    # 外部直接打印两个值
    print(f"\n游戏结束!你的最终得分:{final_score}")
    print(f"你最后一次答对的字符模式:{last_correct_pat}")

    # 写入本地文件保存
    with open("game_record.txt", "a", encoding="utf-8") as f:
        f.write(f"最终得分:{final_score},最后答对模式:{last_correct_pat}\n")
    print("本次游戏记录已存入本地game_record.txt文件")

对应问题说明

  • 本地文件保存实现:
    用Python内置的文件操作接口即可完成,上面代码用with open()语法会自动处理文件开关,不需要手动写close()逻辑。传入参数"a"代表追加写入模式,每次游戏的记录会存在文件末尾,不会覆盖之前的历史记录;如果只想保留最新一次记录,把"a"改成"w"即可。
  • 函数外部访问内部变量实现:
    完全可以,优先用返回值传值,不要滥用全局变量。Python函数内部的局部变量默认对外不可见,只要把需要外部使用的得分、pattern放在return后返回,外部调用函数时用变量接住返回值,就可以在函数外任意打印、处理这两个值,逻辑清晰也不会出现全局变量污染的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 18:09:20