[英]What's the best between return the result and print it at the end of the function?
[英]How to print a '+' between values and a'=" at the end before the result?
例如,如果以下代碼的用戶輸入為 5。 那么我得到的output就是3+33+333+3333+33333+37035。 我的output怎么變成3+33+333+3333+33333=37035。
我試過 sep, end,但似乎無法讓它打印 + 作為分隔符,並在結果之前的末尾打印 = (=370350)。
n = int(input('Enter a positive integer: '))
sequence_number=3
sums = 0
for i in range(n):
print(sequence_number, end='+') with + between each
sums = sums+sequence_number # this will add the numbers
sequence_number = sequence_number * 10 + 3
print(sums)
如果你有更好的方法來編寫這段代碼,我會洗耳恭聽!
你有兩個選擇:
+
:for i in range(n):
if i == n-1: end_char = ' '
else: end_char = '+'
print(sequence_number, end=end_char)
...
+
將它們連接起來:lhs = []
for i in range(n):
lhs.append(sequence_number)
...
print("+".join(lhs), f"= {sums}")
將sequence_number
保留為重復字符串實際上會更容易:
limit = 5
digit = '3'
sequence = [digit * count for count in range(1, limit+1)]
# ['3', '33', '333', '3333', '33333']
total = sum(map(int, sequence))
# 37035
print(f'{"+".join(sequence)}={total}')
# 3+33+333+3333+33333=37035
為簡潔起見,省略了一些print
語句。
使用列表理解和字符串操作:
lst = [str(sequence_number)*(i+1) for i in range(n)]
>>> "=".join(["+".join(lst),str(sum(map(int,lst)))])
'3+33+333+3333+33333=37035'
使用join
和 f-strings 構建您想要打印的實際字符串幾乎總是比亂用print
參數 IMO 更好的選擇; 如果不出意外,如果您需要執行除打印之外的其他操作,則可以更輕松地重用該字符串。
其他一些答案已經展示了如何通過構建列表來做到這一點; 我將展示一種使用內聯生成器表達式來完成此操作的方法。 將你將多次使用的東西(即字符串化的sequence_number
和你需要迭代的range
)分配給短變量名可以非常緊湊地表達它:
n = range(1, int(input('Enter a positive integer: '))+1)
s = "3"
print(f"{'+'.join(s*i for i in n)}={sum(int(s*i) for i in n)}")
這是一個可能的解決方案:
n = int(input('Enter a positive integer: '))
sequence_number = 3
sums = sequence_number
print(sequence_number, end='')
for i in range(1, n):
print(f'+{sequence_number}', end='')
sums += sequence_number
sequence_number = sequence_number * 10 + 3
print(f'={sums}')
另外的選擇:
n = int(input('Enter a positive integer: '))
sequence_number = 3
sums = 0
for i in range(n):
print(sequence_number, end=('+' if i != n-1 else '='))
sums += sequence_number
sequence_number = sequence_number * 10 + 3
print(sums)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.