lehrkraefte:blc:informatik:glf4-20:simulation:python-repe-exos

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:glf4-20:simulation:python-repe-exos [2021/03/30 11:56]
Ivo Blöchliger [Einstiegsaufgaben Simulation mit Python]
lehrkraefte:blc:informatik:glf4-20:simulation:python-repe-exos [2021/04/06 09:48] (current)
Ivo Blöchliger [Histogram Wüfelsummen]
Line 7: Line 7:
 # Wöchentliche Zunahme in Prozent (oder Abnahme negativ) # Wöchentliche Zunahme in Prozent (oder Abnahme negativ)
 zunahme = 20 zunahme = 20
 +
 +# 10 mal wiederholen, Variable 'woche' hochzählen
 +  # Aktuelle Fallzahlen ausgeben (mit print)
 +  # Fallzahlen für die nächste Woche berechnen
 </code> </code>
 Die Ausgabe soll wie folgt sein: Die Ausgabe soll wie folgt sein:
Line 30: Line 34:
     return 0     # Muss die Summe, nicht 0 zurückgeben, aber sonst ist das Programm nicht lauffähig.     return 0     # Muss die Summe, nicht 0 zurückgeben, aber sonst ist das Programm nicht lauffähig.
        
-anzahlWuerfel = 4 
 for i in range(10): for i in range(10):
-    print(wuerfelsumme(anzahlWuerfel))+    print(wuerfelsumme())
 </code> </code>
  
Line 43: Line 46:
     return 0     # Muss die Summe, nicht 0 zurückgeben, aber sonst ist das Programm nicht lauffähig.     return 0     # Muss die Summe, nicht 0 zurückgeben, aber sonst ist das Programm nicht lauffähig.
          
 +anzahlWuerfel = 4
 for i in range(10): for i in range(10):
-    print(wuerfelsumme())+    print(wuerfelsumme(anzahlWuerfel))
 </code> </code>
  
Line 53: Line 57:
 === Liste mit n Nullen === === Liste mit n Nullen ===
 Schreiben Sie eine Funktion, die eine Liste mit $n+1$ Nullen erzeugt und zurückgibt. Schreiben Sie eine Funktion, die eine Liste mit $n+1$ Nullen erzeugt und zurückgibt.
 +
 +Siehe auch [[lehrkraefte:blc:informatik:glf4-20:simulation:python-repe#listen|im Cheat-Sheet]]
 <code python> <code python>
 def nullen(n): def nullen(n):
Line 58: Line 64:
     # Liste mit n+1 Nullen füllen     # Liste mit n+1 Nullen füllen
     return liste     return liste
-print(nullen(3))   # Muss [0,0,0,0] ausgeben (Einträge)+print(nullen(3))   # Muss [0,0,0,0] ausgeben (Einträge, damit der Index 3 als letzter noch existiert)
 </code> </code>
  
Line 71: Line 77:
  
 # Liste mit Nullen erzeugen # Liste mit Nullen erzeugen
-# Zufallsversuch durchführen und Einträge entsprechend erhöhen.+# Zufallsversuch 1000 mal durchführen und Einträge der Liste entsprechend erhöhen.
  
 csv = ""     # Zeichenkette für Resultat csv = ""     # Zeichenkette für Resultat
 #  CSV-Zeichenkette aufbauen (\n in Zeichenkette für Zeilumbruch einfügen) #  CSV-Zeichenkette aufbauen (\n in Zeichenkette für Zeilumbruch einfügen)
  
-datei = File.open("histogram.csv", "w"   # Datei überschreiben (schlägt fehl, wenn in Excel geöffnet)+datei = open("histogram.csv", "w"   # Datei überschreiben (schlägt fehl, wenn in Excel geöffnet)
 datei.write(csv)                           # Datei in Datei schreiben datei.write(csv)                           # Datei in Datei schreiben
 datei.close()                              # Datei schliessen datei.close()                              # Datei schliessen
Line 82: Line 88:
 Erzeugen Sie mit der Funktion der Aufgabe darüber eine Liste mit genügend Einträgen, damit jede mögliche Summe einen Platz in der Liste hat. Erzeugen Sie mit der Funktion der Aufgabe darüber eine Liste mit genügend Einträgen, damit jede mögliche Summe einen Platz in der Liste hat.
  
-Bestimmen Sie dann ''versuche'' mal die Summe von ''wuerfel'' Würfeln (mit der Funktion zwei Aufgaben weiter oben).+Bestimmen Sie dann ''versuche'' mal die Summe von Anzahl''wuerfel'' Würfeln (mit der Funktion zwei Aufgaben weiter oben). 
 + 
 +<hidden Lösungsvorschlag> 
 +<code python summe-von-n-wuerfeln.py> 
 +from random import randrange 
 +wuerfel = 10         # Anzahl Würfel 
 +versuche = 100000     # Wie viel mal Würfeln 
 + 
 +def nullen(n): 
 +    liste=[] 
 +    for i in range(n+1): # n+1 mal wiederholen    
 +        liste.append(0)  # Eine Null anfügen 
 +    return liste 
 + 
 +def wuerfelsumme(n): 
 +    summe = 0  # Das ist eine Null 
 +    for i in range(n):  # Diese Variable i hat nichts mit der Variable i unten zu tun 
 +        summe += randrange(1,7) 
 +    return summe 
 + 
 +# Liste zum Zählen der Vorkommnisse 
 +anzahlen = nullen(6*wuerfel) 
 + 
 +# Zufallsversuch 'versuche' mal durchführen und Einträge der Liste entsprechend erhöhen. 
 +for i in range(versuche): 
 +    ergebnis = wuerfelsumme(wuerfel) 
 +    # Dem 'ergebnis' entsprechendes Element in der Liste 'anzahlen' um 1 erhöhen 
 +    anzahlen[ergebnis] += 1 
 + 
 +print("%d Versuche mit %d Würfeln" % (versuche, wuerfel)) 
 +print(anzahlen) 
 + 
 +csv = "Summe;Anzahl\n"     # Zeichenkette für Resultat 
 +for summe in range(wuerfel, 6*wuerfel+1):  # Alle möglichen Summen 
 +    csv += "%d;%d\n" % (summe, anzahlen[summe]) 
 + 
 +print(csv) 
 +datei = open("histogram.csv", "w"   # Datei überschreiben (schlägt fehl, wenn in Excel geöffnet) 
 +datei.write(csv)                           # Datei in Datei schreiben 
 +datei.close()                              # Datei schliessen 
 +</code> 
 +</hidden>
  
 === Histogramm in Excel zeichnen === === Histogramm in Excel zeichnen ===
-Laden Sie die CSV-Datei in Excel, um das Histogram zu zeichnen.+Laden Sie die CSV-Datei in Excel, um das Histogram zu zeichnen. D.h. eine Grafik, die anzeigt, wie viel mal welche Würfelsumme gewürfelt wurde.
  
 ====== Expert-Aufgaben ====== ====== Expert-Aufgaben ======
  • lehrkraefte/blc/informatik/glf4-20/simulation/python-repe-exos.1617098204.txt.gz
  • Last modified: 2021/03/30 11:56
  • by Ivo Blöchliger