所以我的問題是用我自己制作的一個新類組裝日期時間函式,它應該像影像上一樣給出年份和月份,以存盤降雨資料。我是這種語言的新手,所以如果我能得到任何建議或開始的路徑,我將不勝感激。
另外,這是我到目前為止嘗試過的代碼,就像我說的那樣,我不知道如何構造它(我將值 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
預期輸出:
--------------
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
謝謝你,任何建設性的意見或建議都被接受,以繼續學習這條道路,謝謝你的考慮。
uj5u.com熱心網友回復:
到目前為止,這看起來相當不錯。不要datetime以現有物體的名稱宣告新類。date如果您想像這樣將物件合并到實作中,可以將物件作為建構式引數傳遞
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}")
作為旁注,如果您想擴展另一個類,例如,datetime您將使用類似的語法
class RainData(datetime):
它為您提供datetime課程的全部功能,但可以選擇添加您自己的內容。參考這里https://docs.python.org/3/tutorial/classes.html#inheritance
我只是認為在您當前描述的要求中沒有多大意義。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/512095.html
標籤:Python约会时间
上一篇:CASESTATEMENT一個月的最后一天或一個月的最大日期EOMONTH和MAXDate
下一篇:使用范圍遞增日期時間物件
