limit = int(input("Limit: "))
allvalue = ""
count = 0
number = 0
while count < limit:
number += 1
count += number
allvalue += str(number) + " + "
print(allvalue)
我的输出1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 +
我希望+符号只在数字之间。不是最后一个,也不是第一个。
一个可能的解决方案是使用" + ".join()
,它使用" + "
上的字符串方法来收集值
>>> values = "1 2 3 4 5".split()
>>> " + ".join(values)
'1 + 2 + 3 + 4 + 5'
limit = int(input("Limit: "))
allvalue = ""
count = 0
number = 0
while count < limit:
number += 1
count += number
if count != limit:
allvalue += str(number) + " + "
else:
allvalue += str(number)
print(allvalue)
希望有帮助。
我想和大家分享一下这个问题的数学解决方案。
这个问题是
Sum of n numbers
问题的一个典型变体,这里描述limit
的sum
已经作为输入,而不是n
。
import math
limit = int(input("Limit: ")) # n * (n + 1) / 2 >= limit
n = math.ceil( ((1 + 4*2*limit)**0.5 - 1) / 2 ) # ((b^2 - 4ac)^(1/2) - b) / 2a where a = b = 1, c = 2*limit
allValue = " + ".join([str(i) for i in range(1, n+1)])
print(allValue)
您不需要number
和count
变量,并且通过从初始值开始,您可以在数字之前添加+
。
limit = int(input("Limit: "))
count = 1
allvalue = str(count)
while count < limit:
count += 1
allvalue += " + " + str(count)
print(allvalue)
您也可以尝试使用for循环。
limit = int(input("Limit: "))
allvalue = ""
for i in range(0, limit):
if i+1 == limit:
allvalue += str(i+1)
else:
allvalue += str(i+1) + "+"
print(allvalue)
这里有一个简单易行的方法,您可以尝试在结果字符串
中切片print(allvalue[:-2])
代码:
limit = int(input("Limit: "))
allvalue = ""
count = 0
number = 0
while count < limit:
number += 1
count += number
allvalue += str(number) + " + "
print(allvalue)
print(allvalue[:-2])
输出:分享结果:https://onlinegdb.com/HFC2Hv4wq
Limit: 9
1 + 2 + 3 + 4 +
1 + 2 + 3 + 4