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:27]
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 40: Line 65:
 <WRAP todo> <WRAP todo>
 Nun drehen wir den Spiess um. Schreiben Sie ein Programm, welches eine zufällige Zahl zu finden versucht. Versuchen Sie einen möglichst effizienten Algorithmus zu finden. Nun drehen wir den Spiess um. Schreiben Sie ein Programm, welches eine zufällige Zahl zu finden versucht. Versuchen Sie einen möglichst effizienten Algorithmus zu finden.
-</WRAP> 
- 
-<WRAP todo> 
-Schreibe ein Programm, welches eine Liste bestehend aus ganzen Zahlen aufsteigend sortiert. Der Benutzer soll per Eingabe entscheiden, welche Elemente in die Liste kommen und er soll so viele Elementen eingeben können, wie er will. Wenn er mit der Eingabe fertig ist, soll er mit einem Befehl (zum Beispiel q) die Eingabe beenden. 
 </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.1603870049.txt.gz
  • Last modified: 2020/10/28 08:27
  • by mirco.triner