如何在 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 生成。但是当你想像上例中所示的 + 和 = 那样合并字符串元素时,它会变得非常混乱。
我正在尝试弄清楚如何在使用 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 生成。但是当你想像上例中所示的 + 和 = 那样合并字符串元素时,它会变得非常混乱。