我想知道在使用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
正在查找''?stackoverflow.com/a/18320507/1248974
这可能是您要找的-stackoverflow.com/questions/11266068/…
你好像不小心问了两个问题。第一个问题:上面回答的退格(\b)。另一个是你的实际问题…这是因为每个印刷品都有自己的线条。您需要构造一个字符串并打印一次,而不是打印多个。如果你已经习惯了Java,那么打印系统So.Out.PrtLn,而你需要打印。所以,先构建字符串,然后在所有迭代之后打印出来。
我不认为你能在打印后用"退格"键。至少从终端上删除是不容易的。但您可以在打印字符串之前构建它:
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
如果有任何不清楚的地方,请随时发表评论。
评论时间太长,所以我会在这里发表。如果您有一个想要格式化和打印的序列,那么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循环来打印每个数字:
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='')
(请注意,我的回答是隐含的问题,而不是"如何做退格"问题)