Wiederholungen mit EVA



Wiederholungen

gibts nicht nur im TV, sondern auch beim Programmieren mit Python! Schauen wir uns folgendes Beispiel an:

1    def passwort():
2        i=1
3        eingabe = ''
4        while (i <= 3 and eingabe <> 'GEHEIM'):
5            # hier beginnt die Schleife
6            print('Passwortabfrage (', i , '.ter Versuch)')
7            eingabe = input('Passwort: ')
8            if (eingabe == 'GEHEIM'):
9                print('Wir begruessen dich am Rechner Athena2222!')
10           elif (i == 3):
11               print('SO wirst du NIE das Passwort erraten!')
12           else:
13               print('Falsches Passwort zur falschen Zeit am falschen Ort!')
14           i = i + 1   # wichtig!!!
15           # hier endet die Schleife
16   # Test:
17   passwort()

Bemerkungen zu diesem Python-Skript:

Und hier ein Testlauf:

Passwortabfrage ( 1 .ter Versuch)
Passwort: Hallo
Falsches Passwort zur falschen Zeit am falschen Ort!
Passwortabfrage ( 2 .ter Versuch)
Passwort: Kurs
Falsches Passwort zur falschen Zeit am falschen Ort!
Passwortabfrage ( 3 .ter Versuch)
Passwort: E2
SO wirst du NIE das Passwort erraten!

Programmieren mit EVA

EVA steht fur Eingabe, Verarbeitung, Ausgabe. Versuche, ein Problem immer in drei Schritten anzugehen:

  1. Eingabe: Überlege, welche Eingabe das Programm benötigt! Für die Eingabe hast du eine Python-Funktion, welche? ___________________
  2. Verarbeitung: Hier gilt es, zu denken (!). Du schreibst Funktionen, oder benutzt Python-Funktionen. Frage dich beim Schreiben der Funktion immer, brauche ich eine Variable, wenn ja, wofür, oder benötige ich eine Verzweigung, oder eventuell doch eine Schleife, weil etwas wiederholt wird?
  3. Ausgabe: Die Ausgabe ist wieder einfach, im Moment benutzen wir hierfür die Python-Funktion __________, aber es gibt da noch wesentlich mehr!

Aufgaben

1. Versuche, das Passwort-Beispiel zum Laufen zu bringen. Versuche auch, eine Endlosschleife zu erzeugen, wie machst du das? (Davor unbedingt abspeichern!) Verändere auch die Schleifen-Bedingung (eingabe <> 'GEHEIM'), aber Vorsicht: ENDLOSSCHLEIFEN lauern überall!
Verändere die Zeilen 8-13, kann man damit eine Endlosschleife erzeugen?
Abspeichern unter passwort2.py

2. Schreibe ein Programm, das folgende Ausgabe erzeugt:

    I like the blues!
      I like the blues!
        I like the blues!
          I like the blues!
            I like the blues!
              I like the blues!
                I like the blues!

Tipp: Schreibe erst ein Programm, das folgende Ausgabe erzeugt:

I like the blues!  
I like the blues!  
I like the blues!  
I like the blues!  
I like the blues!  
I like the blues!

Hinweis: du brauchst mindestens eine Schleife! Benutze: ' '*i (i: deine Zahlvariable in der Schleife)
Abspeichern unter blues.py

3. Ein "richtiges" Passwort-Programm schreibt natürlich nicht das Kennwort lesbar in den Quelltext. Die Alternative bietet das Python-Modul hashlib, ein Beisiel via MD5 (md steht für message-digest) ist das kleine Programm passwort-md.py. Finde heraus, wie das Problem der Passwortspeicherung in diesem Skript gelöst wurde.
Hinweis: Auch MD5 ist keine sichere Verschlüsselung . . .


→ sp, 2023-07-26