LU13.L01 - Boot

boat.py
from dataclasses import dataclass
 
 
@dataclass
class Boat:
    make: str
    model: str
    year: int
    length: float
    serial_number: str
 
    def print_infos(self):
        print(
            f"Make: {self.make}, Model: {self.model}, Year: {self.year}, Length: {self.length}, Serial Number: {self.serial_number}")
 
    def __str__(self):
        return f"Make: {self.make}, Model: {self.model}, Year: {self.year}, Length: {self.length}, Serial Number: {self.serial_number}"
 
    def __lt__(self, other):
        if self.length == other.length:
            return self.year < other.year
        return self.length < other.length
main.py
from boat import Boat
 
 
def main():
    boats = [Boat(make='Sealine', model='S34', year=2019, length=12.5, serial_number='123456789'),
             Boat(make='Bavaria', model='Cruiser 41', year=2018, length=12.5, serial_number='987654321'),
             Boat(make='Jeanneau', model='Sun Odyssey 349', year=2017, length=11.5, serial_number='456789123'),
             Boat(make='Beneteau', model='Oceanis 38', year=2016, length=11.0, serial_number='321456789')]
 
    # TODO 1: Ergänzen Sie die Klasse Boot um die Methode __str__ in der die Attribute des Bootes ausgegeben werden.
 
    # TODO 2: Passen Sie das folgende Codestück so an, dass nicht mehr printInfos() verwendet wird,
    #  sondern die __str__() Methode.
    #        Die Ausgabe soll wie folgt aussehen:
    #        Make: Sealine, Model: S34, Year: 2019, Length: 12.5, Serial Number: 123456789
    #        Make: Bavaria, Model: Cruiser 41, Year: 2018, Length: 12.5, Serial Number: 987654321
    #        Make: Jeanneau, Model: Sun Odyssey 349, Year: 2017, Length: 11.5, Serial Number: 456789123
    #        Make: Beneteau, Model: Oceanis 38, Year: 2016, Length: 11.0, Serial Number: 321456789
 
    for boat in boats:
        print(boat)
 
    # TODO 3: Testen Sie Ihre Lösung mir dem Testfall 'test_first_output', anschliessend
    #  Commiten und Pushen Sie die Lösung.
 
    # TODO 4: Machen Sie ihre Boote zuerst nach Länge (aufsteigend) und dann nach Jahrgang (aufsteigend) vergleichbar
 
    # TODO 5: Sortieren Sie die Boote nach Länge und dann nach Jahrgang
    sorted_boats = sorted(boats)
    # TODO 6: Geben Sie die sortierte Liste der Boote aus
    for boat in sorted_boats:
        print(boat)
    # TODO 7: Testen Sie Ihre Lösung mir dem Testfall 'test_after_sorting_output', anschliessend
    #  Commiten und Pushen Sie die Lösung.
 
 
if __name__ == '__main__':
    main()
  • modul/m319/learningunits/lu13/loesungen/bootsortieren.txt
  • Last modified: 2024/01/08 10:51
  • by kmaurizi