所以我有
packs_purchased = (10, 6, 36)
dice_purchased = (2, 0, 1)
board_games_purchased = (3, 2, 0)
和
prices = (4.25, 125, 11, 50)
我如何讓這個 for 回圈回傳一個串列而不僅僅是輸出
for packs_purchased in packs_purchased:
if packs_purchased < 35:
packs_spent = packs_purchased * prices[0]
else:
packs_spent = (int(math.floor(packs_purchased / 36)) * prices[1]) ((packs_purchased % 36) * prices[0])
print("%.2f" % packs_spent)
現在它列印
42.50
25.50
125.00
我希望它回傳一個串列,比如
packs_spent(42.50, 25.50, 125.00)
uj5u.com熱心網友回復:
只需在for回圈之前創建一個串列,然后附加到該串列而不是列印。
packs_spent = []
for pack in packs_purchased:
if pack < 35:
spent = pack * prices[0]
else:
spent = (int(math.floor(pack / 36)) * prices[1]) ((pack % 36) * prices[0])
packs_spent.append(spent)
print(packs_spent)
# [42.5, 25.5, 125.0]
要使用正確的小數位數并以問題中顯示的格式列印,您可以使用串列理解:
print("packs_spent(",
', '.join(f"{i:.2f}" for i in packs_spent),
")",
sep="")
# packs_spent(42.50, 25.50, 125.00)
uj5u.com熱心網友回復:
只需宣告一個空串列并將結果附加到該串列中。
packs_list = []
for packs_purchased in packs_purchased:
if packs_purchased < 35:
packs_spent = packs_purchased * prices[0]
else:
packs_spent = (int(math.floor(packs_purchased / 36)) * prices[1]) ((packs_purchased % 36) * prices[0])
packs_list.append(packs_spent)
print(packs_list)
uj5u.com熱心網友回復:
您的 Python 代碼中有一些愚蠢的錯誤以及一些樣式錯誤(但我們不會去那里,因為它并不重要)。
錯誤包括,您variable對迭代變數和 for使用相同,iterable在使用 以iterable供將來使用時可能會造成重大混淆,并且您可能會得到 ,int而不是tuple。
另外,旁注,list comprehension在local范圍內有變數而不是global,因此它不會造成混淆,但我仍然建議更改迭代變數名稱。
@Green Cloak Guy 已經給出了答案,但可以使用串列理解即興創作。它還有助于使用比 略少的記憶體list,更少的線路使用和更少的時間消耗。我建議使用arrayby numpy,但讓我們離開它。
print([f'{packs * prices[0]:.2f}' if packs < 35 else f'{(int(math.floor(packs / 36)) * prices[1]) ((packs % 36) * prices[0]):.2f}' for packs in packs_purchased])
輸出:
>>> [42.50, 25.50, 125.00]
上面的輸出被稱為,list而不是你在你想要的輸出中所說的。如果你想要那個輸出,你可以做,就像@Green Cloak Guy 所做的那樣,但仍然是一個例子:
CREATED_LIST = [f'{packs * prices[0]:.2f}' if packs < 35 else f'{(int(math.floor(packs / 36)) * prices[1]) ((packs % 36) * prices[0]):.2f}' for packs in packs_purchased]
print(f'packs_spent({", ".join(CREATED_LIST)})')
輸出:
>>> packs_spent(42.50, 25.50, 125.00)
uj5u.com熱心網友回復:
import math
packs_purchased = (10, 6, 36)
dice_purchased = (2, 0, 1)
board_games_purchased = (3, 2, 0)
prices = (4.25, 125, 11, 50)
result = []
for packs_purchased in packs_purchased:
if packs_purchased < 35:
packs_spent = packs_purchased * prices[0]
else:
packs_spent = (int(math.floor(packs_purchased / 36)) * prices[1]) ((packs_purchased % 36) * prices[0])
a = ("%.2f" % packs_spent)
result.append(a)
result = list(map(float, result))
print("packs_spent:", (result))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/346100.html
上一篇:如何使用另一個DataFrame的值作為索引和列參考(并替換其他)在DataFrame中保留一個值?
下一篇:如何在串列中使用字串格式?
