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

如何在Python中隐藏input()的用户输入,自定义输入展示位置?

问题:隐藏输入默认显示,自定义输入内容的打印位置

我需要隐藏take_stick = int(input())的默认用户输入显示,将输入内容打印到指定位置,期望输出效果如下:

Game of sticks
Player 1 enter how many sticks to remove: 2
There are 19 sticks left
Player 2 enter how many sticks to remove: 4
Must remove between 1-3 sticks! 

但目前程序会在每行之间单独显示用户输入的数字,当前代码如下:

def main():
    print("Game of sticks")
    player_turn = 1
    starting_sticks = 21
    sticks_left = starting_sticks

    while True:
        if starting_sticks == 21:
            if sticks_left < 1:
                print("There are", sticks_left, "sticks left")
            take_stick = int(input())

            if take_stick < 1 or take_stick > 3:
                print("Must remove between 1-3 sticks!")

            elif take_stick >= 1 and take_stick <= 3:
                sticks_left -= take_stick
            if sticks_left == 21:
                print("Player", player_turn, "enter how many sticks to remove:", take_stick)
                player_turn += 1
                if player_turn == 3:
                    player_turn -= 2
            elif sticks_left != 1:
                print("Player", player_turn, "enter how many sticks to remove:", take_stick)
                player_turn += 1
                if player_turn == 3:
                    player_turn -= 2
                print("There are", sticks_left, "sticks left")

            if sticks_left <= 0:
                print()
                print("Player", (player_turn), "lost the game!")
                break
main()

解决方法

核心是先打印输入提示(不换行),再获取输入,这样用户输入的内容会直接跟在提示文本后面,无需事后重复打印,同时避免输入内容单独占一行。另外需要修正原代码中冗余的starting_sticks ==21判断(该变量从未修改,条件永远成立),梳理逻辑流程:

修改后的代码:

def main():
    print("Game of sticks")
    player_turn = 1
    sticks_left = 21

    while True:
        # 先打印提示,end=''让光标停在提示末尾,不换行
        print(f"Player {player_turn} enter how many sticks to remove: ", end='')
        # 直接获取输入,此时输入会显示在提示后面
        take_stick = int(input())

        # 处理非法输入
        if take_stick < 1 or take_stick > 3:
            print("Must remove between 1-3 sticks!")
            continue  # 不切换玩家,重新输入

        # 合法输入,减少剩余棍子数
        sticks_left -= take_stick

        # 检查是否游戏结束
        if sticks_left <= 0:
            print(f"\nPlayer {player_turn} lost the game!")
            break

        # 打印剩余棍子数
        print(f"There are {sticks_left} sticks left")

        # 切换玩家
        player_turn = 2 if player_turn == 1 else 1

main()

关键说明:

  1. print(..., end=''):取消默认的换行符,让输入光标停在提示文本后面,用户输入的数字会直接显示在提示末尾,符合期望格式。
  2. 移除了原代码中冗余的starting_sticks判断,简化逻辑。
  3. 用continue处理非法输入,避免错误切换玩家。
  4. 优化玩家切换逻辑,用player_turn = 2 if player_turn ==1 else 1替代繁琐的加减操作。

内容的提问来源于stack exchange,提问作者emkay

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 01:54:26