如何在python中做退格

时间:2016-12-23 01:28:35

标签: python-3.x backspace

我正在尝试弄清楚如何在使用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

3 个答案:

答案 0 :(得分:1)

我认为你打印后不能做“退格”。至少从终端擦除不会很容易。但是你可以在打印之前构建字符串:

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中,以便将其构建为:{/ p>

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

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

Enter a number: 5
5

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

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

答案 1 :(得分:0)

不要使用原始for循环来打印每个数字,请尝试以下方法:

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语句中的换行符,并将其设置为空字符串:

print(e, end='')

(请注意,我处理了隐含的问题,而不是&#39;我如何进行退格问题)

答案 2 :(得分:0)

评论太长了,所以我会在这里发帖。 如果您有要格式化和打印的序列,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.生成。但是当你想要合并像+和=这样的字符串元素时它会变得非常混乱。如上例所示。