efinf:blcks2017:jython:tipps

  • Abbruch bei X Mit getKeyCodeWait() kannst du den KeyCode einer Taste auslesen
  • abs liefert den Absolutwert einer Zahl.
  • getX() und getY() liefert die Position der Turtle. Um zu verstehen, wie sie sich bewegt empfiehlt sich print(getPos()) einzubauen.
  • Abbruch der Schleife. Das Beispielprogramm definiert eine sogenannte Listener-Funktion. Diese kann die Schlaufe nicht direkt abbrechen. Du kannst aber in dieser Funktion den Wert einer globalen Variable verändern und auf Grund dieses Werts die Schlaufe abbrechen:
    stopit = False
     
    def changeglobalvariabe():
        # definiert stopit als globale Variable
        global stopit
        stopit = True
     
    print(stopit)
    changeglobalvariabe()
    print(stopit)
     
    while True:
        if(stopit):
            break

Bei A1 geht es darum, dass mit Zufallszahlen experimentiert wird. Die ganze Darstellung ist für uns untergeordnet. Versuch den Code unten zu verstehen und ergänze ihn, mit zufällig gezogenen Monaten.

birthday.py
from gpanel import *
import random
 
# Anzahl Wiederholungen
NB_GAMES = 100
# Wartezeit zwischen den Wiederholungen
DELAY_TIME = 1000
# Anzahl Kinder
NB_CHILDREN = 5
 
def play():
   #initilaisiert die Monate, das heist, in jedem Montag sind zuerst 0 Kinder
   for n in range(12):
      year[n] = 0
   for n in range(NB_CHILDREN):
      '''
      Hier müssen zufällige Monate gezogen werden und die gezogenen Kinder zu den Monaten in years addiert werden
 
      '''
      move(5 + 10 * month, -5 + year[month] * 10)
      fillCircle(5)
   #Falls in einem Monat mehr als zwei Geburtstage True, sonst False zurück geben 
   for month in year:
      if month > 1:
         return True
   return False         
 
# Gitterbrett Zeichnen
def drawBoard():
   #Board löschen
   clear()
   #Kübel zeichnen
   for n in range(12):
      move(5 + 10 * n, 60)
      rectangle(10, 120)
 
makeGPanel(0, 120, 0, 120)
#years initialisieren
year = [0] * 12 
n = 0
nbHit = 0
while n < NB_GAMES:
   n += 1
   drawBoard()
   rc = play()
   if rc:
     nbHit += 1
   title("Game #: " + str(n) + " #hits: " + str(nbHit))
   delay(DELAY_TIME)
 
bioNoten = []
note = 0
 
while note != None:
    note = inputFloat("Bitte Note eingeben", False)
    #so lange in der Schlaufe, bis Abbrechen gedrückt wird
    # noten den bioNoten hinzufügen.
 
# durchschnitt der bioNoten ausgeben 
# hilfreiche funktionen: * sum(liste) ergibt summe, 
#                        * len(liste) ergibt länge
 
 
#schönes ausgeben
 
 
noten = [2,3,4]
 
print('%s' % ', '.join(map(str, noten)))
  • efinf/blcks2017/jython/tipps.txt
  • Last modified: 2017/09/12 15:21
  • by Simon Knaus