簡體   English   中英

在 Python 中查找 avg 和總月/降雨量的值

[英]Finding the values of avg and total month/rainfall, in Python

所以我對這個的問題是將日期時間 function 與我自己制作的新 class 組合在一起,它應該像圖像一樣給出年份和月份,以存儲降雨數據。 我是這種語言的新手,所以如果我能得到任何建議或開始的路徑,我將不勝感激。

另外,這是我到目前為止嘗試過的代碼,就像我說的,我不知道如何構造它(我將 4 的值用於 random.randit 的 0-4 范圍):

from random import randint
class datetime:
    def __init__(self, month_name, rainfall_year, value=4): 
        self.month = month_name
        self.year= rainfall_year
        self.value = value

預計 output:

--------------
June (2022) = 1
May (2022) = 2
April (2022) = 3
March (2022) = 1
February (2022) = 3
January (2022) = 2
December (2021) = 0
November (2021) = 4
October (2021) = 4
September (2021) = 0 
August (2021) = 1
July (2021) = 2
-----------------------
Total rainfall: 23
Average rainfall 1.91

謝謝你,任何建設性的意見或建議都會被接受,並繼續學習這條路,謝謝你的考慮。

到目前為止,這看起來相當不錯。 不要聲明名稱為datetime的新 class,它是一個現有實體。 如果您想像這樣將date object 合並到實現中,則可以將其作為構造函數參數傳遞

from random import randint
from datetime import date


class RainData():
    def __init__(self, rain_date: date, value: int):
        self.rain_date = rain_date
        self.value = value


rd = RainData(rain_date=date(2022, 10, 1), value=randint(0, 4))
print(f"{rd.rain_date.strftime('%B (%Y)')} = {rd.value}")
# Output: October (2022) = 2

要生成所有 12 個月的數據,您需要執行以下操作來代替此處的最后兩行。 它循環從 1 到 12 的數字並將RainData條目添加到名為year_data的列表中並打印它。

year_data = [RainData(rain_date=date(2022, m, 1), value=randint(0, 4)) for m in range(1, 13)]
[print(f"{rd.rain_date.strftime('%B (%Y)')} = {rd.value}") for rd in year_data]

實現相同結果的更簡單方法如下所示

year_data = []
for month in range(1, 13):
    rd = RainData(rain_date=date(2022, month, 1), value=randint(0, 4))
    year_data.append(rd)
    print(f"{rd.rain_date.strftime('%B (%Y)')} = {rd.value}")

作為旁注,如果您想擴展另一個 class,例如datetime時間,您可以使用類似的語法

class RainData(datetime):

它為您提供datetime class 的全部功能,但可以選擇添加您自己的內容。 參考這里https://docs.python.org/3/tutorial/classes.html#inheritance

我只是認為它在您當前描述的要求中沒有多大意義。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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