如何去除Python数组打印的括号、逗号与引号?高分榜输出优化
解决高分榜输出格式优化问题
嘿,我明白你现在的困扰——那些元组自带的括号、逗号确实让高分榜看起来乱糟糟的!问题出在你存储的是元组对象,直接打印它们就会输出Python默认的元组格式。咱们来快速搞定这个优化:
核心问题分析
你代码里的entry = score, name会创建一个元组(比如(95, "Alice")),当你用print(*Scores, sep='\n')打印时,Python会把每个元组转换成它的字符串表示形式,也就是带着括号和逗号的格式,这就是多余符号的来源。
解决方案:手动格式化每个条目
我们需要遍历排序后的高分列表,把每个元组里的姓名和分数提取出来,按自己想要的格式拼接成字符串再打印。这里有两种简单的实现方式:
方式1:使用for循环逐个格式化
把原来的print(*Scores, sep='\n')替换成下面的代码:
for score, name in Scores: print(f"{name}: {score}")
这种方式直观易懂,适合新手调试和修改格式(比如调整成"{score} - {name}"的样式)。
方式2:用生成器表达式一次性输出
如果想更简洁,可以用生成器配合join方法一次性输出所有行:
print('\n'.join(f"{name}: {score}" for score, name in Scores))
这种方式效率更高,代码也更紧凑。
修改后的完整代码
把方案整合到你的代码里,最终版本如下:
Scores = [] count = 0 question = True while question == True: name = str(input("Whose score are you inputting?")) if name != "Done": score = int(input("What did " + name + " score?")) entry = score, name Scores.append(entry) count = count + 1 elif name == "Done" and count < 5: print("You haven't input 5 scores yet!") else: question = False Scores.sort(reverse=True) # 替换成格式化输出代码 for score, name in Scores: print(f"{name}: {score}") input("")
这样输出的高分榜就会变成清晰易读的样式,比如:
Alice: 95
Bob: 88
Charlie: 76
内容的提问来源于stack exchange,提问作者Stephen Rapole
相关产品推荐
相关产品推荐

