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