我正在做一个类似于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("= ")后添加这两行:

系统.标准输出.写("\033[F")#回上一行

系统.标准输出.写入("\033[K")\35;清除行

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):  
                系统.标准输出.写("\033[F")#回上一行 
                系统.标准输出.写入("\033[K")\35;清除行
            
        score += 1
        if elapsed_time > seconds:
            print("Time\'s up! Your score was %d." % (score))
            break  


play(10)

Python相关问答推荐

如何避免Chained when/then分配中的Mypy不兼容类型警告?

如何使用数组的最小条目拆分数组

计算组中唯一值的数量

使用setuptools pyproject.toml和自定义目录树构建PyPi包

无法使用DBFS File API路径附加到CSV In Datricks(OSError Errno 95操作不支持)

如何将多进程池声明为变量并将其导入到另一个Python文件

海上重叠直方图

为什么if2/if3会提供两种不同的输出?

ruamel.yaml dump:如何阻止map标量值被移动到一个新的缩进行?

获取PANDA GROUP BY转换中的组的名称

如何在Python中将超链接添加到PDF中每个页面的顶部?

使用SQLAlchemy从多线程Python应用程序在postgr中插入多行的最佳方法是什么?'

每次查询的流通股数量

上传文件并使用Panda打开时的Flask 问题

以极轴表示的行数表达式?

在Pandas 中以十六进制显示/打印列?

在不中断格式的情况下在文件的特定部分插入XML标签

来自任务调度程序的作为系统的Python文件

了解如何让库认识到我具有所需的依赖项

安装PyTorch时出现CondaVerificationError