lehrkraefte:blc:informatik:ffprg1-2020:ifelse

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
lehrkraefte:blc:informatik:ffprg1-2020:ifelse [2020/01/26 11:27]
Ivo Blöchliger create
lehrkraefte:blc:informatik:ffprg1-2020:ifelse [2022/02/24 12:33] (current)
Ivo Blöchliger [If: Selektion, Bedingte Ausführung]
Line 3: Line 3:
 <code python> <code python>
 w = -5 w = -5
-print("Die Wurzel aus %f ist %f"(w, w**0.5))+print("Die Wurzel aus %f ist %f" (w, w**0.5))
 </code> </code>
 Anstatt einfach mit einem Fehler abzubrechen, könnte man vorher überprüfen, ob das Sinn macht: Anstatt einfach mit einem Fehler abzubrechen, könnte man vorher überprüfen, ob das Sinn macht:
 <code python> <code python>
 +# -*- coding: utf-8 -*-
 +# Das ist ein Kommentar. Die obige Zeile erlaubt es 
 +# Umlaute ä, ö, ü in Kommentare zu schreiben. Sonst geht das in TigerJython aber nicht.
 +
 w = float(raw_input("Zahl = ")) w = float(raw_input("Zahl = "))
 +# Testen, ob die Wurzel überhaupt gezogen werden kann
 if (w>=0): if (w>=0):
     print("Die Wurzel aus %f ist ungefähr %f" % (w, w**0.5))     print("Die Wurzel aus %f ist ungefähr %f" % (w, w**0.5))
Line 19: Line 24:
   * Die Zeilen danach sind **eingrückt**. Es können mehrere eingrückte Zeilen vorkommen.   * Die Zeilen danach sind **eingrückt**. Es können mehrere eingrückte Zeilen vorkommen.
  
 +
 +===== Vergleichsoperatoren =====
 +  * ''=='' (zwei! Gleichheitszeichen) zur Überprüfung der Gleichheit
 +    * das einfache Gleichheitszeichen wird für die Zuweisung (miss)gebraucht
 +  * ''<'', ''<nowiki><=</nowiki>'', ''>='', ''>''  Kleiner, Kleiner gleich, grösser gleich, grösser
 +  * ''!='' ungleich
 +
 +===== Logische Verknüpfungen in Python =====
 +  * ''and'' (beides, sowohl als auch)
 +  * ''or'' (das eine, das andere oder beides)
 +  * ''not'' (nicht)
 +  * ''!='' (für XOR, wenn das mal jemand braucht)
 +
 +Hinweis: Das ''and'' hat eine höhere Priorität als das ''or'' (wie das * eine höhere Priorität hat als das +).
 +
 +So erhält man ''True'' für den Ausdruck ''True or True and False'' weil zuerst das ''and'' ausgewertet wird. 
 +
 +''(True or True) and False'' ergibt dann aber ''False''.
 +
 +
 +===== Wahrheitswerte True und False =====
 +Das Ergebnis eines Vergleichs ist immer True oder False.
 +
 +Man beachte folgenden Code:
 +<code python>
 +ok = True
 +
 +# Overkill:  (ok==True ergibt einfach wieder True, und der folgende Block im if wird ausgeführt
 +if ok==True:
 +  print("Alles ok")
 +  
 +# Das reicht
 +if ok:
 +  print("Viel schlanker und einfacher zu lesen und schreiben")
 +</code>
 ===== Aufgaben ===== ===== Aufgaben =====
   * Schreiben Sie ein Programm, das die Temperatur vom Benutzer erfragt und dann mindestens drei Bereiche ausgibt, wie z.B. "kalt, warm, heiss".   * Schreiben Sie ein Programm, das die Temperatur vom Benutzer erfragt und dann mindestens drei Bereiche ausgibt, wie z.B. "kalt, warm, heiss".
   * Schreiben Sie ein Programm, das die quadratische Gleichung $ax^2+bx+c=0$ löst, wenn die Werte für $a$, $b$, $c$ am Programmbeginn gegeben sind. Unterscheiden Sie dazu die Fälle, je nach Anzahl der Lösungen   * Schreiben Sie ein Programm, das die quadratische Gleichung $ax^2+bx+c=0$ löst, wenn die Werte für $a$, $b$, $c$ am Programmbeginn gegeben sind. Unterscheiden Sie dazu die Fälle, je nach Anzahl der Lösungen
 +
 +<hidden Lösungsvorschläge>
 +<code python temperatur.py>
 +# -*- coding: utf-8 -*-
 +w = int(raw_input("Temperatur = "))
 +if w<0:
 +    print("Es ist kalt!")
 +elif w<10:
 +    print("Es ist kuehl!")
 +elif w<18:
 +    print("Es ist angenehm kuehl")
 +elif w<25:
 +    print("Angenehm warm")
 +else:
 +    print("Es ist heiss!")
 +</code>
 +
 +<code python quadratisch.py>
 +# -*- coding: utf-8 -*-
 +a=2
 +b=3
 +c=-3
 +
 +if a==0:
 +   print("Lineare Gleichung. Die Loesung ist x=%f" % (-c/b))
 +else:
 +    # Diskriminante
 +    d = b*b-4*a*c
 +    if (d<0):
 +        print("Keine Loesung, negative Diskriminate")
 +    elif d==0:  # Achtung, Vergleich mit Dezimalzahlen liefert nicht immer das gewuenschte Ergebnis!
 +        print("Diskriminate Null, genau eine Loesung x=%f" % (-b/(2*a)))
 +    else:
 +        d=d**0.5
 +        x1 = (-b+d)/(2*a)
 +        x2 = (-b-d)/(2*a)
 +        print("Zwei Loesungen. x1=%f, x2=%f" % (x1,x2))
 +</code>
 +</hidden>
 +
 +====== Quizz ======
 +True oder False? 
 +
 +Achtung: Aufgaben 4 und 5 können **ohne Rechnen** gelöst werden!
 +<quizlib id="quiz" rightanswers="[['a1'], ['a0'], ['a1'], ['a1'], ['a0']]" submit="Check Answers">
 +    <question title="&lt;pre&gt;2>3&lt;/pre&gt;" type="radio">True|False</question>
 +    <question title="&lt;pre&gt;7>9 or 9>7&lt;/pre&gt;" type="radio">True|False</question>
 +    <question title="&lt;pre&gt;not(True and (False or True))&lt;/pre&gt;" type="radio">True|False</question>
 +    <question title="&lt;pre&gt;234*345&lt;321*251 and False&lt;/pre&gt;" type="radio">True|False</question>
 +    <question title="&lt;pre&gt;234*345&lt;321*251 or True&lt;/pre&gt;" type="radio">True|False</question>
 +</quizlib>
  
  
  • lehrkraefte/blc/informatik/ffprg1-2020/ifelse.1580034433.txt.gz
  • Last modified: 2020/01/26 11:27
  • by Ivo Blöchliger