lehrkraefte:blc:informatik:glf20:programmieren:while

Differences

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

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
lehrkraefte:blc:informatik:glf20:programmieren:while [2020/10/28 08:01]
mirco.triner
lehrkraefte:blc:informatik:glf20:programmieren:while [2020/10/30 13:21] (current)
mirco.triner
Line 22: Line 22:
  
 <WRAP info> <WRAP info>
-Bei einer While-Schleife kann es leicht passieren, dass die Schleife endlos weiterläuft. Im Gegensatz zu einer For-Schleife muss die Variable bei einer While-Schleife manuell verändert werden.+Die folgenden Codeblöcke führen zum gleichen Ergebnis: 
 +<code> 
 +counter += 1 
 +</code> 
 +<code> 
 +counter = counter + 1 
 +</code>
 </WRAP> </WRAP>
  
 +<WRAP alert>
 +Bei einer While-Schleife kann es leicht passieren, dass die Schleife endlos weiterläuft. Im Gegensatz zu einer For-Schleife muss die Variable bei einer While-Schleife manuell verändert werden. Speichern Sie deshalb Ihr Programm, bevor Sie es ausführen.
 +</WRAP>
 +
 +<WRAP todo>
 +Schreiben Sie nun ein Programm, welches einen Bankautomat simuliert. Der Bankautomat versucht die Anzahl von Noten möglichst gering zu halten. Möchte der Kunde 250.-, dann wird der Automat 1x 200.- und 1x 50.- ausgeben.
 +
 +*  TIPP: Benutzen Sie <code>//</code> (ganzzahlige Division) um herauszufinden, wie oft eine Note ausgegeben werden soll. Mit <code>%</code> (Modulo) können Sie dann den Rest berechnen, welcher dann mit einer tieferen Note ausgegeben wird.
 +</WRAP>
 +
 +<WRAP info>
 +Zufallszahl - Python kann selbständig eine Zufallszahl generieren
 +<code>
 +from random import *
 +x = randint(1, 100)
 +print x
 +</code>
 +Der oben aufgeführte Code gibt eine ganze Zahl zwischen 1 und 100 aus.
 +</WRAP>
  
 <WRAP todo> <WRAP todo>
Line 42: Line 67:
 </WRAP> </WRAP>
  
- 
-<WRAP todo> 
-**FIZZ BUZZ!** Programmieren Sie ein Programm, das alle Zahlen von 1 bis 100 ausgibt, aber alle jene, die durch 3 teilbar sind durch ''fizz'' ersetzt, jene, die durch 5 teilbar sind durch ''buzz'' ersetzt und jene, die sowohl durch 3 als auch durch 5 teilbar sind durch ''fizz buzz'' ersetzt. 
-<hidden Verlangte Ausgabe bis 30> 
-<code text> 
-1 
-2 
-fizz 
-4 
-buzz 
-fizz 
-7 
-8 
-fizz 
-buzz 
-11 
-fizz 
-13 
-14 
-fizz buzz 
-16 
-17 
-fizz 
-19 
-buzz 
-fizz 
-22 
-23 
-fizz 
-buzz 
-26 
-fizz 
-28 
-29 
-fizz buzz 
-</code> 
-</hidden> 
-</WRAP> 
- 
-===== Optionale, weitere Aufgaben ===== 
-  * Geben Sie alle Teiler einer Zahl aus. 
-  * Geben Sie die Primfaktorzerlegung einer Zahl aus. 
-  * Bestimmen Sie, ob eine gegebene Zahl eine Primazahl ist oder nicht. 
-  * Geben Sie die Primzahlen der Reihe nach aufsteigend aus. 
  
 ===== Lösungsvorschläge ===== ===== Lösungsvorschläge =====
 <hidden Lösungvorschläge> <hidden Lösungvorschläge>
 <code python> <code python>
-for i in range(1,101): +#Bankautomat 
-    if i % 3 ==  and 5 == 0: + 
-        print("fizz buzz") +print("Guten Tag") 
-    elif 3 == 0: +cash = inputInt("Welcher Betrag soll ausbezahlt werden?"
-        print("fizz") + 
-    elif 5 == 0: +while cash > 0
-        print("buzz")+    if cash//1000 > 0
 +        print("%d x 1000.-" % (cash//1000)) 
 +        cash cash%1000 
 +    elif cash//200 > 0: 
 +        print("%d x 200.-% (cash//200)) 
 +        cash = cash%200 
 +    elif cash//100 > 0: 
 +        print("%d x 100.-" % (cash//100)) 
 +        cash cash%100 
 +    elif cash//50 > 0: 
 +        print("%d x 50.-% (cash//50)
 +        cash = cash%50 
 +    elif cash//20 > 0: 
 +        print("%d x 20.-" % (cash//20)) 
 +        cash cash%20 
 +    elif cash//10 > 0: 
 +        print("%d x 10.-% (cash//10)
 +        cash = cash%10
     else:     else:
-        print(i)+        print("und noch ein wenig Münz") 
 +        cash = 0 
 </code> </code>
  
 <code python> <code python>
-inputInt("Temperatur in Grad Celsius"+from random import * 
-text   "%d°C ist " % t +to_be_guessed randint(1, 100
-if (t<15)    +guess 0 
-    text += "kalt  # eine Abkürzung für text = text + "kalt+while guess != to_be_guessed
-elif t<25+    guess input("Neue Zahl: "
-    text += "warm"+    if guess > 0: 
 +        if guess > to_be_guessed: 
 +            print "Zahl zu gross
 +        elif guess to_be_guessed: 
 +            print "Zahl zu klein" 
 +    else: 
 +        print "Schade, Sie geben also auf!" 
 +        break
 else: else:
-    text += "heiss" +    print "Glückwunsch! Das war's!"
- +
-print(text+".")+
 </code> </code>
  
 <code python> <code python>
-Definition der Koeffizienten +#Zahl zwischen 1-100 
-a,b,c 0,0,0 +to_be_guessed input("Neue Zahl: ") 
-print("Gleichung %.2fx^2%+.2fx%+.2f = 0% (a,b,c))+guess = 50 
 +counter = 1
  
-if a==0 # Lineare Gleichung +while guess !to_be_guessed
-    if b==0 # Gleichung ohne x +    if(guess > to_be_guessed)
-        if c==0: +        guess //2
-            print("Wahre Aussage, L=R, jedes x ist Lösung"+
-        else: +
-            print("Falsche Aussage, keine Lösung")+
     else:     else:
-        print("Lineare Gleichung, eine Lösung: x=%f" % (-c/b)+        if((to_be_guessed guess% 2 == 1): 
-else: # Quadratische Gleichung +            guess +1 
-    d b*b-4*a*c  # Diskriminante +        else: 
-    if (d<0): +            guess += ((to_be_guessed guess) /2) 
-        print("Keine reelle Lösung"+    print("Round: %d, Guess %d" % (counterguess)) 
-    elif d==0: +    counter += 1 
-        print("Genau eine Lösung x=%f" % (-b/(2*a))) + 
-    else: +print(to_be_guessed) 
-        d = d**0.5 # Wurzel aus der Diskriminante +   
-        x1 = (-b-d)/(2*a) +
-        x2 = (-b+d)/(2*a+
-        print("Zwei Lösungen x1=%f und x2=%f" % (x1x2))+
 </code> </code>
 </hidden> </hidden>
  • lehrkraefte/blc/informatik/glf20/programmieren/while.1603868516.txt.gz
  • Last modified: 2020/10/28 08:01
  • by mirco.triner