如何在python中进行退格

How to do a backspace in python

我想知道在使用for循环时如何打印单行字符串。如果你知道其他的方法,我会感谢你的帮助。谢谢您。另外,尝试编辑我的代码!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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

出:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Enter a number: 5
*
**
***
****
*****
Equation:
1
+
2
+
3
+
4
+
5

如何使方程只在一条直线上,如下所示:

1
1+2+3+4+5


我不认为你能在打印后用"退格"键。至少从终端上删除是不容易的。但您可以在打印字符串之前构建它:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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
2
3
4
5
1
1+
1+2
1+2+
...

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

1
2
3
4
5
6
7
8
9
10
11
12
Enter a number: 5
5

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

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


评论时间太长,所以我会在这里发表。如果您有一个想要格式化和打印的序列,那么python的格式化选项可以很好地使用。考虑以下内容…

1
2
3
4
5
>>> 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.生成,但是当您想要合并字符串元素(如上面的示例中所示的+和=)时,它会变得相当混乱。


请尝试以下操作,而不是使用原始for循环来打印每个数字:

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

说明:

[str(i) for i in range(1, times + 1)]是一个列表理解,它返回所有数字的列表,转换为字符串以便我们打印它们。

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

可选地:

如果您希望对原始代码进行简单修改,只需使用关键字paramater end取消每个print语句的换行,并将其设置为空字符串:

1
print(e, end='')

(请注意,我的回答是隐含的问题,而不是"如何做退格"问题)