如何解决AttributeError: 'Fraction' 对象没有属性 'denom'
下面的代码是分数计算器的一部分,我希望我的代码从我的 init 转到我的 gcd 函数,以便我可以将结果作为分数的 gcd 传递以简化它,我不知道下面的方法是否正确。
class Fraction:
def __init__(self,num,denom) -> None:
self.num = self.denom = self.gcd()
if self.denom < 0:
self.denom = abs(self.denom)
self.num = -1*self.num
elif self.denom == 0:
raise ZeroDivisionError("cansnot divide by zero")
def gcd(self):
while self.denom != 0:
self.num,self.denom = self.denom,self.num%self.denom
return abs(self.num)
def get_fraction() -> Fraction:
while True:
num: str = input("Enter the numerator")
denom: str = input("Enter the denominator")
try:
a = int(num)
b = int(denom)
return Fraction(a,b)
except ValueError:
print("Enter valid numerator and denominator")
def compute(f1: Fraction,operator: str,f2: Fraction) -> None:
okay = True
if operator == '+':
result = f1.__add__(f2)
elif operator == '-':
result = f1.__sub__(f2)
elif operator == '*':
result = f1.__mul__(f2)
elif operator == '/':
result = f1.__truediv__(f2)
else:
print(operator," is an unrecognized operator")
okay = False
if okay == True:
print(f"{f1} {operator} {f2} = {result}")
def main() -> None:
"""Main menu"""
print("Welcome to the Fraction Calculator! ")
while True:
print('Press Q to quit or any other key to start')
z = input("Start or Quit?")
if z == 'Q' or z == 'q':
exit()
else:
f1: Fraction = get_fraction()
operator: str = input("Operation (+,-,*,/,=,<,>,<=,>=,!= ): ")
f2: Fraction = get_fraction()
try:
compute(f1,operator,f2)
except ZeroDivisionError as e:
print(e)
if __name__ == '__main__':
main()
执行此操作时出现以下错误:
while self.denom != 0:
AttributeError: 'Fraction' object has no attribute 'denom'
我不确定为什么会抛出此消息。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。