繁体   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