如何在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
相关产品推荐
相关产品推荐

