簡體   English   中英

如何在結果之前的末尾打印值之間的“+”和“=”?

[英]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)

如果你有更好的方法來編寫這段代碼,我會洗耳恭聽!

你有兩個選擇:

  1. 檢查這是否是最后一次迭代,如果是,則使用空格而不是+
for i in range(n):
    if i == n-1: end_char = ' '
    else: end_char = '+'
    print(sequence_number, end=end_char)
    ...
  1. Append 將所有數字添加到一個列表中,然后在 for 循環外用+將它們連接起來:
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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM