在Python中如何将用户输入的Y/N对应替换为YES/NO打印输出
Python实现用户输入替换输出的解决方法
你使用end="\r"不生效的核心原因是:input()执行时,用户按下回车确认输入后会自动触发换行,光标已经移动到输入行下方的新行,\r仅能将当前行的光标移动到行首,无法修改上一行的用户输入内容。
根据你的需求分两种场景提供解决方案:
场景1:不需要擦除用户输入的内容,仅输出对应结果
你的原有代码存在缩进错误、循环逻辑不合理、未处理非法输入的问题,修正后代码如下:
while True: user_choice = input("Are you ready to play? (Y/N)\n---\n").upper() if user_choice == "Y": print("YES") get_random_word() break elif user_choice == "N": print("NO") break else: print("输入无效,请输入Y或N")
场景2:需要完全替换用户输入行,隐藏原始输入内容
可以用ANSI终端转义序列实现光标回退+行清除效果,该方案兼容Win10及以上版本终端、macOS、Linux终端,旧版Windows cmd可先执行os.system('')开启转义支持,代码如下:
import os # 兼容旧版Windows终端 if os.name == 'nt': os.system('') while True: user_choice = input("Are you ready to play? (Y/N)\n---\n").upper() if user_choice == "Y": # \033[F:光标上移一行回到输入行开头 \033[K:清除当前行内容 print("\033[F\033[KYES") get_random_word() break elif user_choice == "N": print("\033[F\033[KNO") break else: print("\033[F\033[K输入无效,请重新输入Y或N")
内容的提问来源于stack exchange,提问作者codingmartins
相关产品推荐
相关产品推荐

