不好意思,因為我不是本科的學生,所以不太會做,想了一整天完全沒頭緒,目前是在for loop跟nested loops的部分,前面只有教if跟list而已所以能用的不多,想請大家幫我看看這道題該麼解?
麻煩大家了!非常感謝~~
prices = [145.3, 143.5, 140.6, 137.8, 151.3, 155.4, 149.2, 152.5]
撰寫一個函數可以計算每個數值的三日移動平均值(moving average, MA),並將三日的中間數值與此移動平均值相減,並利用dict紀錄漲幅情形。
答案格式得像這樣
print(trend(prices[1], prices[:3]))
答: {'increase': 0.36666666666667425}
print(trend(prices[2], prices[1:4]))
答:{'decrease': -0.03333333333335986}
還有呈上題,扣除掉第一筆與最後一筆,利用for loop將上述moving average的每一個數值同時列印出來,答案得一模一樣,包含小數位、天數。
答案是像這樣:
Day2 is increase: 0.37.
Day3 is decrease: -0.03.
Day4 is decrease: -5.43.
Day5 is increase: 3.13.
Day6 is increase: 3.43.
Day7 is decrease: -3.17.
以上兩題,麻煩各位大神幫我解答一下!!
不懂,只有學list的話,為啥題目會有dict的東西@@
基本上需要以下概念
def trend(mid:int,threeNum:list)->dict:#單純提示你輸入進來東西的資料型態與return的資料型態
average = sum(threeNum)/3 #三日平均
result = mid - average #得到結果
if result > 0: #確認key應該是啥
key = "increase"
elif result < 0:
key = "decrease"
#你題目沒說相等時如何處置
return {key:result}#回傳字典
prices = [145.3, 143.5, 140.6, 137.8, 151.3, 155.4, 149.2, 152.5]
temp = []#儲存用
for i in range(1,len(prices)-1):
result = trend(prices[i], prices[i-1:i+2])
print(result)
temp.append(result)
###################################
#理論上你得到這些數值之後應該會存到一個空間
#那就只要進行輸出即可
day = 2#計算日子用
for i in temp:
key,value = list(i.items())[0]#dict.keys(),dict.values(),dict.items()為dict必會知識
print(f"Day{day} is {key}:{value:.2f}.") #運用python裡的format->format不懂可以google
day +=1
以上這樣
想問一下,它前面還有一題是要算平均,我自己寫出來是長這樣
#計算list的平均值
all = 0
for i in prices[0:7]:
all = all + i
list_average = (all + i)/8
print(list_average)
但把這個放在前面後,你寫的 average = sum(threeNum)/3 這條就會報錯說'float' object is not callable,想問問該如何解決@@
完整的話長這樣
prices = [145.3, 143.5, 140.6, 137.8, 151.3, 155.4, 149.2, 152.5]
#計算list的平均值
all = 0
for i in prices[0:7]:
all = all + i
list_average = (all + i)/8
print(list_average)
#三日移動平均值
def trend(mid:int,threeNum:list)->dict:
three_avg = sum(threeNum)/3
result = mid - three_avg
if result > 0:
out ="increase"
elif result < 0:
out="decrease"
return {out:result}
out_data = []
for i in range(1,len(prices)-1):
result = trend(prices[i], prices[i-1:i+2])
out_data.append(result)
print(trend(prices[1], prices[:3]))
我看沒有產生任何錯誤耶