所以我試圖將分配給字典中每個變數的每個數字相乘output,我創建了一個函式totalcalories(inputlst)來找到它。
所以我想要做的是定義一個函式totalcalories(inputlst),該函式將根據你吃的每頓飯回傳消耗的卡路里總數。
卡路里將存盤在這樣的字典中......
inputlst = {"Cabbage":"4,2,0", "Carrot":"9,1,5", "Fatty Pork":"431,1,5"}
其中第一個數字將乘以 5,第二個數字將乘以 5,第三個數字將乘以 9。
所以例如如果Cabbage被呼叫,(它的數字是(4,2,0)),輸出應該回傳((4 * 5) (2 * 5) (0 * 9)),即30。
我試圖這樣做,這顯然不起作用......
def totalcalories(inputlist):
output = {inputlist}
g= []
for x in output:
g.append(x)
return g
print(totalcalories(["Cabbage"]))
我真的很陌生,所以請嘗試使用字典和簡單的初學者編程技巧來幫助我,謝謝:)
uj5u.com熱心網友回復:
你可以使用這樣的東西:
sum([x*y for x, y in zip(map(int, inputlst["Cabbage"].split(",")),[5,5,9])])
本質上,在將輸入串列決議為整數后,您可以并排獲得它們各自的乘數,并使用串列理解將它們相乘。
該功能將是:
def calc(name):
return sum([x*y for x, y in zip(map(int, inputlst[name].split(",")),[5,5,9])])
uj5u.com熱心網友回復:
您的代碼嘗試目前沒有做您希望它做的任何事情,因此最好從頭開始。
首先,您需要一個函式來接收輸入的食物(作為字串)和您的字典inputlst,因此我們可以從以下內容開始:
def totalcalories(food, inputlst):
#calculate calories
首先,您需要能夠訪問與您的字典中的食物鍵相關聯的值。您可以按如下方式執行此操作:
inputlst['Cabbage']
回傳:
'4,2,0'
您的字典值都是數字字串,這使事情變得更加復雜。如果您可以將它們作為串列(例如 [4, 2, 0])使用這些數字會更容易,但我們可以將字串更改為串列并洗掉 ',' ,如下所示:
values = list(inputlst[food])
values = [x for x in values if x != ',']
所以現在你有一個可以使用的值串列,所以現在是將每個值乘以你在上面指定的值(5、5 和 9)的情況。如果它們可能會更改,將它們作為變數添加到您的函式中可能會很有用,但現在我將按如下方式撰寫它:
output = (values[0] * 5) (values[1] * 5) (values[2] * 9)
然后你需要添加return output到你的函式的末尾。希望這些資訊足以讓您現在能夠組合您的功能。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/360824.html
