如何在 python 中进行退格

How to do a backspace in python

我正在尝试弄清楚如何在使用 for 循环时打印单行字符串。如果您知道其他方法,我将不胜感激。谢谢你。另外,尝试编辑我的代码!

times = int(input("Enter a number: "))
print(times)
a = 0
for i in range(times+1):
    print("*"*i)
    a += i
print("Total stars: ")
print(a)
print("Equation: ")
for e in range(1,times+1):
    print(e)
    if e != times:
        print("+")
    else:
        pass

输出:

Enter a number: 5
*
**
***
****
*****
Equation:
1
+
2
+
3
+
4
+
5

如何像这样在一行中写出等式:

1+2+3+4+5

我认为您无法在打印后进行 "backspace"。至少从终端擦除不会很容易完成。但是您可以在打印之前构建字符串:

times = int(input("Enter a number: "))
print(times)
a = 0
for i in range(times+1):
    print("*"*i)
    a += i
print("Total stars: ")
print(a)
print("Equation: ")
equation_string = ""
for e in range(1,times+1):
    equation_string += str(e)
    if e != times:
        equation_string += "+"
    else:
        pass
print(equation_string)

基本上,您将临时方程式存储在 equation_str 中,因此它是这样构建的:

1
1+
1+2
1+2+
...

然后在构建完成后打印 equation_str。修改后的程序输出是这样的

Enter a number: 5
5

*
**
***
****
*****
Total stars: 
15
Equation: 
1+2+3+4+5

如果有任何不清楚的地方,请随时post发表评论。

不用原来的 for 循环来打印每个数字,试试这个:

output = '+'.join([str(i) for i in range(1, times + 1)])
print(output)

解释:

[str(i) for i in range(1, times + 1)] 是一个列表推导式,即 returns 您所有数字的列表,已转换为字符串以便我们可以打印它们。

'+'.join(...) 连接列表中的每个元素,每个元素之间有一个 +

或者:

如果您想对原始代码进行简单的修改,您可以使用关键字参数 end 简单地从每个打印语句中抑制换行符,并将其设置为空字符串:

print(e, end='')

(请注意,我是针对隐含问题,而不是 'how do I do a backspace' 问题)

评论太长了,所以我会post在这里。 如果您有想要格式化和打印的序列,python 的格式化选项可以派上用场。 考虑以下...

>>> num = 5     # number of numbers to generate
>>> n = num-1   # one less used in generating format string
>>> times = [i for i in range(1,num+1)]  # generate your numbers
>>> ("{}+"*n + "{}=").format(*times)     # format your outputs
'1+2+3+4+5='

因此,虽然这没有回答您的问题,但您可以看到列表理解可以发挥作用来生成您的值列表,然后可以在格式生成中使用。格式字符串也可以用 l.c 生成。但是当你想像上例中所示的 + 和 = 那样合并字符串元素时,它会变得非常混乱。