Python While循环运行Scribble Scorer时无法重新计算单词得分如何解决
Scribble Scorer单词计分程序修复方案
问题原因
- 原代码的计分逻辑仅在程序首次启动时执行一次,
totalValue变量第一次计算完成后没有再更新,后续循环输出的始终是第一次的计算结果 - while循环内仅处理了用户输入和打印逻辑,没有重新遍历单词字符计算分值,也没有每次计算前重置总分变量
- 原代码中第一次计分时的for循环存在多余缩进的语法问题
修改后可正常运行的代码
# 字母分值表全局仅需定义一次 score_table = {'e': 1, 't': 1.5, 'a': 2, 'i': 2, 'n': 2, 's': 2, 'h': 2.5, 'r': 2.5, 'd': 2.5, 'l': 3, 'u': 3, 'c': 3.5, 'm': 3.5, 'f': 4, 'w': 4.5, 'y': 4.5, 'p': 5, 'g': 5, 'b': 5.5, 'v': 5.5, 'k': 5.5, 'q': 5.5, 'j': 6, 'x': 6, 'z':6} while True: user_input = input('Welcome to the Scribble Scorer; Enter Word:') # 输入指定关键词退出循环 if user_input == 'nothing': break # 每次计算前重置总分为0 total_score = 0 # 遍历当前输入的单词计算分值,转小写兼容大写输入 for char in user_input.lower(): if char in score_table: total_score += score_table[char] print('Word:', user_input, 'Score:', total_score)
核心修改说明
- 将计分逻辑移入while循环内部,每次输入新单词都会重新执行计算
- 每次计算前重置总分变量为0,避免不同单词的分值互相累计
- 优化循环逻辑,减少重复的输入提示代码,增加小写转换逻辑兼容用户大写输入场景
- 修复了原代码中for循环的缩进错误
内容的提问来源于stack exchange,提问作者Fazli Berisha
相关产品推荐
相关产品推荐

