modul:archiv:m319python:learningunits:lu13:loesungen:bootsortieren

LU13.L01 - Boot

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()
boat.py
from dataclasses import dataclass
 
@dataclass
class Boat:
    make: str
    model: str
    year: int
    length: float
    serial_number: str
 
    @property
    def make(self):
        return self._make
 
    @make.setter
    def make(self, value):
        self._make = value
 
    @property
    def model(self):
        return self._model
 
    @model.setter
    def model(self, value):
        self._model = value
 
    @property
    def year(self):
        return self._year
 
    @year.setter
    def year(self, value):
        self._year = value
 
    @property
    def length(self):
        return self._length
 
    @length.setter
    def length(self, value):
        self._length = value
 
    @property
    def serial_number(self):
        return self._serial_number
 
    @serial_number.setter
    def serial_number(self, value):
        self._serial_number = value
 
    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

In der Funktion main() im File main.py finden Sie 7 ToDo's :

    # 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:
        boat.print_infos()

    # 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

    # TODO 6: Geben Sie die sortierte Liste der Boote aus

    # TODO 7: Testen Sie Ihre Lösung mir dem Testfall 'test_after_sorting_output', anschliessend
    #  Commiten und Pushen Sie die Lösung.
    

Arbeiten Sie sich durch diese 7 ToDo's durch.

  • modul/archiv/m319python/learningunits/lu13/loesungen/bootsortieren.txt
  • Zuletzt geändert: 2024/03/28 14:07
  • von 127.0.0.1