
本文介绍如何利用for循环变量和f-string格式化,在用户输入过程中自动生成带递增序号(如“game 1”、“game 2”)的提示语,避免硬编码和手动计数。
本文介绍如何利用for循环变量和f-string格式化,在用户输入过程中自动生成带递增序号(如“game 1”、“game 2”)的提示语,避免硬编码和手动计数。
在编写交互式程序时,为用户提供清晰、上下文相关的输入提示至关重要。例如,当收集多轮游戏得分时,若所有提示都显示“score for game 1”,不仅会造成混淆,还会降低用户体验。理想的方案是让提示文本中的数字随迭代自动更新。
关键在于善用 for 循环的迭代变量——它天然具备“递增”属性。原始代码中 for i in range(n) 生成的是从 0 到 n-1 的索引,而我们需要的是从 1 到 n 的自然序号。只需将 range 的起始值设为 1、结束值设为 n+1(因为 range 的上界是不包含的),即可直接获得所需序列。
更进一步,使用 f-string(格式化字符串字面量)可简洁、安全地将整数变量嵌入提示文本中,无需字符串拼接或 .format() 调用。以下是优化后的完整实现:
n = int(input("enter total number of games: "))
games = []
for i in range(1, n + 1):
score = int(input(f"score for game {i}: "))
games.append(score)✅ 运行效果示例(当用户输入 3):
使用 font_manager.addfont() 添加中文字体文件,设置 rcParams['font.family'],并禁用 unicode_minus,使 matplotlib 显示中文。
立即学习“Python免费学习笔记(深入)”;
enter total number of games: 3 score for game 1: 85 score for game 2: 92 score for game 3: 78
⚠️ 注意事项:
-
range(1, n+1)是核心:它确保i取值为1, 2, ..., n,完全匹配用户认知中的“第1局”“第2局”; - f-string 中的
{i}会自动转换为字符串,无需str(i); - 若需增强健壮性,建议添加输入异常处理(如非数字输入),但本例聚焦核心逻辑,保持简洁;
- 避免在循环内重复使用固定字符串(如
"score for game 1"),这违背DRY(Don’t Repeat Yourself)原则。
通过这一模式,你不仅能解决游戏计分问题,还可轻松迁移到其他需要序号化提示的场景,如问卷调查、文件批量命名、测试用例编号等——让代码既清晰又可扩展。


















