我正在使用 Python 开发一个音乐应用程序,并希望使用分数模块来处理时间签名等。我的问题是分数被简化了,即:
>>> from fractions import Fraction
>>> x = Fraction(4, 4)
>>> x
Fraction(1, 1)
但是,从音乐的角度来看,重要的是 4/4 保持 4/4,即使它等于 1。是否有任何内置方法可以避免这种行为?
谢谢!
我正在使用 Python 开发一个音乐应用程序,并希望使用分数模块来处理时间签名等。我的问题是分数被简化了,即:
>>> from fractions import Fraction
>>> x = Fraction(4, 4)
>>> x
Fraction(1, 1)
但是,从音乐的角度来看,重要的是 4/4 保持 4/4,即使它等于 1。是否有任何内置方法可以避免这种行为?
谢谢!
是的:为它创建一个自定义类。
音乐拍号不是分数,所以用数学课来表示它们是没有意义的。
您应该使用分数以外的一些数据结构。一个简单的元组是最简单的,尽管你也可以创建自己的类。如果您需要进行计算,请对构成拍号的各个整数进行计算。
不,没有 - GCD 的除法内置于 Fraction 类操作中。无论如何,您可能想要创建自定义类的其他原因,至少如果您正在使用乐谱,是: