gpt4 book ai didi

python - 取两年的平均值,写成[1858-60]

转载 作者:太空狗 更新时间:2023-10-29 17:10:17 26 4
gpt4 key购买 nike

在少数情况下,日期写为“created ca.”。 1858-60',人类读者会将其理解为“约 1858-1860 年创建”。

因此,想象两个代表年的整数。

a = 1858
b = 60

我希望能够得到 a+b == 1859

我可以将它们解析为字符串,取前两个字符 ('18'),连接较短的字符串并将它们解析回数字,当然,但是..这似乎有点圆-盛产。

处理这个问题的 Pythonic 方式是什么?

最佳答案

我认为你的做法是错误的。更简单的方法是将世纪添加到 b,然后将它们用作普通数字,因为它们是可等的。

def add_century(n: int, from_century=1900) -> int:
"""add_century turns a two-digit year into a four-digit year.

takes a two-digit year `n` and a four-digit year `from_century` and
adds the leading two digits from the latter to the former.
"""

century = from_century // 100 * 100
return century + n

然后你可以这样做:

a, b = 1858, 60
b = add_century(b, from_century=a)
result = (a + b) / 2

以这种方式处理数字有两个好处。

首先,您要阐明您可能遇到的极端情况。 明确将一个世纪添加到另一个的结束年份,可以非常清楚如果代码返回错误结果会发生什么。

其次,将对象转换为等同项不仅是个好主意,而且在我们可以说比 Python 更难接受的语言中也是必需的。使两个项目相等的快速转换是确保您不会混淆事物的简单方法。

关于python - 取两年的平均值,写成[1858-60],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47167853/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com