python - 如何从Python控制台中删除最后几个字符?

标签 python console

我正在制作一个小数学游戏,类似于 zeta mac 。一切似乎都进展顺利。理想情况下,我希望此控制台输出能够删除用户输入的错误答案,而无需再次重新打印数学问题供他们解决。这样的事情可能吗?

例如,我可能会提示用户在控制台中回答“57 + 37 =”,然后如果他们输入24(控制台看起来像这样“57 + 37 = 24”,我希望删除24 ,并保留“57 + 37 =”,允许用户再次猜测,而不必在下面的行中再次打印相同的方程。

这是源代码(抱歉,如果它很乱,我刚刚开始学习Python):

import random
import time


def play(seconds):
    start_time = time.time()
    score = 0
    while True:
        current_time = time.time()
        elapsed_time = current_time - start_time
        a = random.randint(2, 100)
        b = random.randint(2, 100)
        d = random.randint(2, 12)
        asmd = random.choice([1, 2, 3, 4])
        if (asmd == 1):
            solve = a + b 
            answer  = input("%d + %d = " % (a, b))
        elif (asmd == 2):
            if (a > b):
                solve = a - b
                answer  = input("%d - %d = " % (a, b))
            else:
                solve = b - a
                answer  = input("%d - %d = " % (b, a))
        elif (asmd == 3):
            solve = a * d
            answer  = input("%d * %d = " % (a, d))
        else:
            solve = d
            c = a * d
            answer  = input("%d / %d = " % (c, a))
    
             
        while (solve != int(answer)):
            answer = input("= ")   
        score += 1
        if elapsed_time > seconds:
            print("Time\'s up! Your score was %d." % (score))
            break  


play(10)

最佳答案

只需在 answer = input("= ") 之后添加这两行即可:

sys.stdout.write("\033[F") #back to previous line

sys.stdout.write("\033[K") #clear line

import random
import time
import sys

def play(seconds):
    start_time = time.time()
    score = 0
    while True:
        current_time = time.time()
        elapsed_time = current_time - start_time
        a = random.randint(2, 100)
        b = random.randint(2, 100)
        d = random.randint(2, 12)
        asmd = random.choice([1, 2, 3, 4])
        if (asmd == 1):
            solve = a + b 
            answer  = input("%d + %d = " % (a, b))                            
        elif (asmd == 2):
            if (a > b):
                solve = a - b
                answer  = input("%d - %d = " % (a, b))
            else:
                solve = b - a
                answer  = input("%d - %d = " % (b, a))
        elif (asmd == 3):
            solve = a * d
            answer  = input("%d * %d = " % (a, d))
        else:
            solve = d
            c = a * d
            answer  = input("%d / %d = " % (c, a))
    
             
        while (solve != int(answer)):
            answer = input("= ") 
            if solve != int(answer):  
                sys.stdout.write("\033[F") #back to previous line 
                sys.stdout.write("\033[K") #clear line
            
        score += 1
        if elapsed_time > seconds:
            print("Time\'s up! Your score was %d." % (score))
            break  


play(10)

关于python - 如何从Python控制台中删除最后几个字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72484522/

相关文章:

python - WAV文件保存顺序错误

python - 调用 super().__init__() 时会给出错误的方法

c# - 如何在我的 C# 控制台应用程序中使用命令行参数?

c - 如何在C中打印特定文本的颜色

python - python中的时间测量脚本

python - 文本小部件不显示 Unicode 字符

python - 如何等待强制子例程在继续下一行之前显示小部件

cron - 如何使用默认队列在本地查看我的 sidekiq 控制台输出?

python - get_serving_url 通过 remote_api_shell.py

python - 在单线程 Python 脚本中有一个控制台