Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Solution #1641

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
73 changes: 71 additions & 2 deletions app/main.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,72 @@
class Distance:
# Write your code here
pass
def __init__(self, km):
self.km = km

def __str__(self):
return f"Distance: {self.km} kilometers."

def __repr__(self):
return f"Distance(km={self.distance})"

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The __repr__ method references self.distance, which is not defined. It should be self.km to correctly represent the object's state.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The __repr__ method references an undefined attribute self.distance. It should be self.km to accurately represent the object's state.


def __add__(self, other):
if not isinstance(other, Distance):
raise TypeError(f"Wrong type(s) for +: 'Distance' and {type(other)}")
return Distance(
km=self.km + other.km
)

def __iadd__(self, other):
if not isinstance(other, Distance):
raise TypeError("Can only add Distance or numeric types.")

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The type checking in the __iadd__ method should allow numeric types as well. Consider checking if other is an instance of Distance or a numeric type.


self.km += other
Comment on lines +19 to +22

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In the __iadd__ method, the code assumes other is a numeric type without checking. You should check if other is an instance of Distance or a numeric type before performing the addition.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The __iadd__ method assumes other is numeric without proper type checking. Ensure other is either a Distance instance or a numeric type before performing the operation.


return self


def __mul__(self, other):
if not isinstance(other, Distance):
raise TypeError("Can only multiply Distance or numeric types.")

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The type checking in the __mul__ method should allow numeric types as well. Consider checking if other is an instance of Distance or a numeric type.


self.km *= other
Comment on lines +28 to +31

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In the __mul__ method, the code assumes other is a numeric type without checking. You should check if other is an instance of Distance or a numeric type before performing the multiplication.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The __mul__ method assumes other is numeric without proper type checking. Ensure other is either a Distance instance or a numeric type before performing the operation.


return self

def __truediv__(self, other):
if not isinstance(other, Distance):
raise TypeError("Can only divide Distance or numeric types.")

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The type checking in the __truediv__ method should allow numeric types as well. Consider checking if other is an instance of Distance or a numeric type.


self.km /= other

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The __truediv__ method assumes other is numeric without proper type checking. Ensure other is either a Distance instance or a numeric type before performing the operation.

round(self.km, 2)
Comment on lines +36 to +40

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In the __truediv__ method, the code assumes other is a numeric type without checking. Additionally, the round function does not modify self.km as intended. You should assign the result of round(self.km, 2) back to self.km.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The round function is not modifying self.km as intended. Assign the result of round(self.km, 2) back to self.km to ensure the value is correctly rounded.


return self

def __lt__(self, other):
if isinstance(other, Distance):
return self.km < other.km
else:
raise TypeError("Can only compare Distance or numeric types.")

def __gt__(self, other):
if isinstance(other, Distance):
return self.km > other.km
else:
raise TypeError("Can only compare Distance or numeric types.")

def __eq__(self, other):
if isinstance(other, Distance):
return self.km == other.km
else:
raise TypeError("Can only compare Distance or numeric types.")

def __le__(self, other):
if isinstance(other, Distance):
return self.km <= other.km
else:
raise TypeError("Can only compare Distance or numeric types.")

def __ge__(self, other):
if isinstance(other, Distance):
return self.km >= other.km
else:
raise TypeError("Can only compare Distance or numeric types.")
Loading