Lesbarkeit (Python)

Aufgabe

Erstellen Sie eine Datei namens readability.py in einem Ordner sentimental-readability. Schreiben Sie darin ein Programm, das den Benutzer auffordert, einen Text einzugeben und anschließend die Klassenstufe des Textes berechnet. Verwenden Sie dazu die Coleman-Liau-Formel.

Diese Aufgabe sollte Ihnen bereits bekannt vorkommen. Wir haben diese Aufgabe in Übungsblatt 2 bereits schon einmal bearbeitet. Somit ist es empfehlenswert, wenn Sie nochmal einen Blick auf Ihren C-Code aus dieser Aufgabe werfen. Im folgenden soll diese Aufgabe nun in Python implementiert werden.

Demo

Details zur Umsetzung

  • Zur Erinnerung: Der Coleman-Liau-Index wird wie folgt berechnet: 0.0588 * L – 0.296 * S – 15.8. Hierbei ist L die durchschnittliche Anzahl der Buchstaben pro 100 Wörter im Text und S die durchschnittliche Anzahl der Sätze pro 100 Wörter im Text ist.
  • Verwenden Sie get_string aus der cs50-Bibliothek, um die Benutzereingabe abfragen
  • Verwenden Sie print, um den Coleman-Liau-Index, den Ihr Programm berechnet hat, auszugeben.
  • Ihr Programm soll Buchstaben, Wörter und Sätze zählen
    • Ein Buchstabe ist ein beliebiger Kleinbuchstabe von a bis z oder ein Großbuchstabe von A bis Z.
    • Ein Wort wird als jede durch Leerzeichen getrennte Zeichenfolge definiert.
    • Ein Satz endet, wenn ein Punkt (.), ein Ausrufezeichen (!) oder ein Fragezeichen (?) vorkommt.
  • Ihr Programm sollte als Ausgabe "Grade X" ausgeben, wobei X die mit der Coleman-Liau-Formel berechnete Klassenstufe ist. X soll hierbei auf die nächste Ganzzahl gerundet werden.
  • Wenn der berechnete Index 16 oder höher ist, soll Ihr Programm "Grade 16+" ausgeben, da dies einem Leseniveau ab der 16. Klassenstufe entspricht (fortgeschrittenes Niveau).
  • Ist der Index kleiner als 1, soll Ihr Programm "Before Grade 1" ausgeben, da dies unterhalb der ersten Klassenstufe liegt.

Testen

Obwohl check50 für dieses Problem verfügbar ist, wird empfohlen, den Code für jeden der folgenden Punkte selbst zu testen.

Führen Sie Ihr Programm mit python readability.py aus und warten Sie auf eine Eingabeaufforderung. Geben Sie nun die folgenden Eingaben ein und prüfen Sie, wie sich Ihr Programm verhält:

  • Test 1
    • Eingabe: One fish. Two fish. Red fish. Blue fish.
    • Erwartetes Verhalten: Before Grade 1
  • Test 2
    • Eingabe: Would you like them here or there? I would not like them here or there. I would not like them anywhere.
    • Erwartetes Verhalten: Grade 2
  • Test 3
    • Eingabe: Congratulations! Today is your day. You're off to Great Places! You're off and away!
    • Erwartetes Verhalten: Grade 3
  • Test 4
    • Eingabe: Harry Potter was a highly unusual boy in many ways. For one thing, he hated the summer holidays more than any other time of year. For another, he really wanted to do his homework, but was forced to do it in secret, in the dead of the night. And he also happened to be a wizard.
    • Erwartetes Verhalten: Grade 5
  • Test 5
    • Eingabe: In my younger and more vulnerable years my father gave me some advice that I've been turning over in my mind ever since.
    • Erwartetes Verhalten: Grade 7
  • Test 6
    • Eingabe: Alice was beginning to get very tired of sitting by her sister on the bank, and of having nothing to do: once or twice she had peeped into the book her sister was reading, but it had no pictures or conversations in it, "and what is the use of a book," thought Alice "without pictures or conversation?"
    • Erwartetes Verhalten: Grade 8
  • Test 7
    • Eingabe: When he was nearly thirteen, my brother Jem got his arm badly broken at the elbow. When it healed, and Jem's fears of never being able to play football were assuaged, he was seldom self-conscious about his injury. His left arm was somewhat shorter than his right; when he stood or walked, the back of his hand was at right angles to his body, his thumb parallel to his thigh.
    • Erwartetes Verhalten: Grade 8
  • Test 8
    • Eingabe: There are more things in Heaven and Earth, Horatio, than are dreamt of in your philosophy.
    • Erwartetes Verhalten: Grade 9
  • Test 9
    • Eingabe: It was a bright cold day in April, and the clocks were striking thirteen. Winston Smith, his chin nuzzled into his breast in an effort to escape the vile wind, slipped quickly through the glass doors of Victory Mansions, though not quickly enough to prevent a swirl of gritty dust from entering along with him.
    • Erwartetes Verhalten: Grade 10
  • Test 10
    • Eingabe: A large class of computational problems involve the determination of properties of graphs, digraphs, integers, arrays of integers, finite families of finite sets, boolean formulas and elements of other countable domains.
    • Erwartetes Verhalten: Grade 16+

Korrektheit

Führen Sie in Ihrem Terminal den folgenden Befehl aus, um die Korrektheit Ihrer Arbeit zu überprüfen.

check50 -l cs50/problems/2024/x/sentimental/readability

Style

Führen Sie den folgenden Befehl aus, um den Stil Ihres Codes mit style50 zu analysieren:

style50 readability.py