Programmieren mit elif


Wetterdienst, die zweite

Hier eine Funktion wetter(), wie sie einige von euch geschrieben haben:

def wetter():
  luftdruck = raw_input('Luftdruck: ')
  temperatur = raw_input('Temperatur: ')
  jahreszeit = raw_input('Jahreszeit: ')
  if (luftdruck == 'steigt' and temperatur == 'steigt' and jahreszeit == 'Sommer'):
    print text1
  if (luftdruck == 'steigt' and temperatur == 'fallt' and jahreszeit == 'Winter'):
    print text2
  if (luftdruck == 'fallt' and temperatur == 'fallt' and jahreszeit == 'Sommer'):
    print text3
  if (luftdruck == 'fallt' and temperatur == 'steigt' and jahreszeit == 'Winter'):
    print text4
  else:
    print sonst

Schauen wir uns einen Testlauf an:

>>> wetter()
Luftdruck: steigt
Temperatur: steigt
Jahreszeit: Sommer
Pack die Badehose ein, nimm dein kleines Schwesterlein ...
Nichts Genaues weiß man nicht!
>>> wetter()
Luftdruck: steigt
Temperatur: fallt
Jahreszeit: Winter
Hei, hei, hei, so eine Schneeballschlacht ...
Nichts Genaues weiss man nicht!
>>> wetter()
Luftdruck: fallt
Temperatur: fallt
Jahreszeit: Sommer
I'm singing in the rain ...
Nichts Genaues weiss man nicht!
>>> wetter()
Luftdruck: fallt
Temperatur: steigt
Jahreszeit: Winter
Leise rieselt der Schnee ...
>>>

Fragen zu diesem Testlauf:


Exkurs: Programmieren, wie geht das?

Wenn ich die Antwort auf die Frage in der Überschrift wüsste, wäre ich nicht mehr hier, sondern würde Seminare veranstalten und Millionen verdienen, mindestens . . . Trotzdem gibt es natürlich einige Tipps:


elif = else + if

Wie lösen wir das Problem der Wettervorhersage? Durch logisches Denken! Überlege:

Wenn Fall 1 vorliegt, gib Text 1 aus,
Sonst: Wenn Fall 2 vorliegt, gib Text 2 aus,
   Sonst: Wenn Fall 3 vorliegt, gib Text 3 aus,
     Sonst: Wenn Fall 4 vorliegt, gib Text 4 aus,
       Sonst (und nur sonst!): gib den Text "Nix genaues ..." aus

Statt Wenn sagen wir if, und statt Sonst schreiben wir else, das gibt also viele (!) ifs und elses, Beispiel:

if (luftdruck == 'steigt' and temperatur == 'steigt' and jahreszeit == 'Sommer'):
   print text1
else:
   if (luftdruck == 'steigt' and temperatur == 'faellt' and jahreszeit == 'Winter'):
      print text2
   else:
      if (luftdruck == 'fallt' and temperatur == 'faellt' and jahreszeit == 'Sommer'):
         print text3
    .
    .
    .

Problem: hier kommt man schnell durcheinander, spätestens beim Einrücken. Die Alternative sieht so aus:

if (luftdruck == 'steigt' and temperatur == 'steigt' and jahreszeit == 'Sommer'):
   print text1
elif (luftdruck == 'steigt' and temperatur == 'faellt' and jahreszeit == 'Winter'):
   print text2
elif (luftdruck == 'faellt' and temperatur == 'faellt' and jahreszeit == 'Sommer'):
   print text3
    .
    .
    .

Es wird also ein else und das darauffolgende if zusammengefasst zu einem elif, kurz: else + if = elif, und dies solltest du unbedingt in dein Programm einbauen, siehe Aufgabe 1.


Aufgaben

  1. Verändere dein Wetterprognoseprogramm so, dass es funktioniert! (Abspeichern unter wetter.py)
  2. Die Raute wartet . . .
    Abspeichern unter caro.py   Eine Raute!


→ sp, 2016-12-08