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