Treffen

Treffen

Mittel

Einführung

Jeden Monat trifft sich dein Partner mit seinem besten Freund. Beide haben sehr volle Terminkalender, sodass es schwierig ist, einen passenden Termin zu finden! Da auch du einen vollen Terminkalender hast, geht dein Partner mögliche Termine für ein Treffen immer mit dir durch:

  • „Kann ich mich am ersten Freitag des nächsten Monats treffen?“
  • „Wie wäre es mit dem dritten Mittwoch?“
  • „Vielleicht der letzte Sonntag?“

Bei eurem Anruf in diesem Monat stellte dir dein Partner diese Frage:

  • „Ich würde mich gern am Teenth-Donnerstag treffen, wäre das in Ordnung?“

Verwirrt fragst du, was ein „Teenth-Tag“ ist. Dein Partner erklärt, dass ein Teenth-Tag, ein Konzept, das er sich ausgedacht hat, die Tage eines Monats bezeichnet, die auf „-teenth“ enden:

  • der 13. (dreizehnte)
  • der 14. (vierzehnte)
  • der 15. (fünfzehnte)
  • der 16. (sechzehnte)
  • der 17. (siebzehnte)
  • der 18. (achtzehnte)
  • der 19. (neunzehnte)

Da es außerdem sieben Wochentage gibt, ist garantiert, dass jeder Wochentag genau einen Teenth-Tag pro Monat hat.

Jetzt, wo du das Konzept eines Teenth-Tags verstehst, schaust du in deinen Kalender. Am Teenth-Donnerstag hast du nichts vor, also bestätigst du deinem Partner freudig das Datum.

Anleitung

Deine Aufgabe ist es, das genaue Datum eines Treffens zu finden, wenn ein Monat, ein Jahr, ein Wochentag und eine Woche gegeben sind.

Es gibt sechs Wochenwerte zu beachten: first, second, third, fourth, last, teenth.

Zum Beispiel könnte man dich bitten, das Datum für das Treffen am ersten Montag im Januar 2018 zu finden (1. Januar 2018).

Ebenso könnte man dich bitten, Folgendes zu finden:

  • den dritten Dienstag im August 2019 (20. August 2019)
  • den teenth Mittwoch im Mai 2020 (13. Mai 2020)
  • den vierten Sonntag im Juli 2021 (25. Juli 2021)
  • den letzten Donnerstag im November 2022 (24. November 2022)
  • den teenth Samstag im August 1953 (15. August 1953)

Teenth

Die teenth-Woche bezieht sich auf die sieben Tage eines Monats, die auf „-teenth“ enden (13., 14., 15., 16., 17., 18. und 19.).

Wenn wir den teenth Samstag im August 1953 finden sollen, schauen wir uns den Kalender an:

    August 1953
Su Mo Tu We Th Fr Sa
                   1
 2  3  4  5  6  7  8
 9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31

Daraus ersehen wir, dass der teenth Samstag der 15. August 1953 ist.

Wie diese Übung in Python aufgebaut ist

Wir haben eine zusätzliche Wochenangabe (fifth) für den fünften Wochentag des Monats hinzugefügt, falls es einen gibt.
Wenn es in einem Monat keinen fünften Wochentag gibt, solltest du eine Exception auslösen.

Exceptions anpassen und auslösen

Manchmal ist es notwendig, Exceptions in deinem Code sowohl zu anpassen als auch mit raise auszulösen. Wenn du das tust, solltest du immer eine aussagekräftige Fehlermeldung angeben, um anzugeben, was die Fehlerquelle ist. Das macht deinen Code lesbarer und hilft beim Debugging erheblich.

Benutzerdefinierte Exceptions lassen sich durch neue Exception-Klassen erstellen (siehe classes für weitere Details), die typischerweise Unterklassen von Exception sind.

In Situationen, in denen du weißt, dass die Fehlerquelle von einem bestimmten Exception-Typ abstammt, kannst du dich dafür entscheiden, von einem der built in error types unter der Exception-Klasse zu erben. Wenn du den Fehler auslöst, solltest du trotzdem eine aussagekräftige Meldung angeben.

Diese Übung erfordert, dass du eine benutzerdefinierte Exception erstellst, die ausgelöst/„geworfen“ wird, wenn deiner meetup()-Funktion eine ungültige Kombination aus Wochentagsname und Zahl übergeben wird. Die Tests sind nur dann erfolgreich, wenn du passende Exceptions anpasst, diese Exceptions mit raise auslöst und passende Fehlermeldungen angibst.

Um eine built-in exception anzupassen, erstelle eine class, die von dieser Exception erbt. Wenn du die benutzerdefinierte Exception mit einer Meldung auslöst, schreibe die Meldung als Argument an den exception-Typ:

# subclassing the built-in ValueError to create MeetupDayException
class MeetupDayException(ValueError):
    """Exception raised when the Meetup weekday and count do not result in a valid date.

    message: explanation of the error.

    """
    def __init__(self, message):
        self.message = message

        
# raising a MeetupDayException
raise MeetupDayException("That day does not exist.")

Quelle

Jeremy Hinegardner erwähnte ein Boulder-Treffen, das am Wednesteenth eines jeden Monats stattfindet
Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab
Python Exercism

Bereit, mit Treffen zu starten?

Melde dich bei Exercism an, um Python mit 17 Konzepte146 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.