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