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

Python猜词游戏:如何让下划线输出在同一行而非自动换行?

解决Python猜词游戏下划线换行问题

嘿,我来帮你搞定这个问题!你的下划线之所以会一行一个显示,核心原因是Python的print()函数默认在输出末尾加换行符(\n),所以每个下划线都被单独拆成了一行。另外我还发现你代码里有个小bug,会导致你永远赢不了游戏,顺便一起给你修正啦~

首先说换行的问题:只需要给print()加上end参数,指定输出结束后用空格代替默认的换行符就行。然后是那个bug:你现在不管字符有没有被猜中,都在给failed加1,这会让failed永远等于单词的长度,根本触发不了failed == 0的胜利条件,得把failed +=1移到未猜中的分支里。

下面是修改后的完整代码,我还补充了一些游戏逻辑让它更完整:

import random

# 读取词库文件(注意你的文件路径要正确哦)
lines = open('/Users/xxx/Desktop/wordlist.text').read().splitlines()
word = random.choice(lines)
guesses = ''
turns = 10

print("Start Guessing")
while turns > 0:
    failed = 0
    # 先清除当前行的旧输出,让界面更干净
    print("\r", end="")
    for char in word:
        if char == " ":
            print(char, end=" ")  # 空格也用空格分隔开
        elif char in guesses:
            print(char, end=" ")
        else:
            print("_", end=" ")
            failed += 1  # 只有没猜中的字符才算失败计数
    print()  # 打印完当前状态后换行,方便输入
    
    if failed == 0:
        print("You won! 🎉")
        break  # 赢了就退出循环啦
    
    # 获取用户输入,转成小写避免大小写敏感问题
    guess = input("Guess a character: ").lower()
    guesses += guess
    
    # 判断是不是猜错了
    if guess not in word:
        turns -= 1
        print(f"Wrong! You have {turns} turns left.")
        if turns == 0:
            print(f"You lose! The word was: {word}")

核心修改说明:

  • 解决换行问题:给所有输出字符的print()加上end=" ",让每个字符输出后用空格分隔,而不是自动换行。
  • 修复胜利逻辑:把failed +=1移到else分支(也就是字符未被猜中的情况),这样只有未猜中的字符才会增加失败计数,胜利条件才能正常触发。
  • 优化体验:添加print("\r", end="")清除旧状态行,输入转小写避免大小写问题,补充了失败提示和游戏结束的反馈。

这样修改后,下划线就会变成_ _ _ _ _ _的形式显示在同一行,游戏也能正常判断输赢啦~

内容的提问来源于stack exchange,提问作者J.walker

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:22:56