J1: Turtle-Grafik für Kontrollstrukturen
import turtle
import random
import time
screenbreite = turtle.Screen().window_width()
screenhoehe = turtle.Screen().window_height()
# A1: Lasse die Turtle ein Dreieck zeichnen
turtle.speed(100)
# ----------------------------------
turtle.forward(100)
turtle.write("geradeaus", False, align="center")
turtle.forward(100)
turtle.left(120)
turtle.write("links", False, align="center")
turtle.forward(100)
turtle.write("geradeaus", False, align="center")
turtle.forward(100)
turtle.left(120)
turtle.write("links", False, align="center")
turtle.forward(100)
turtle.write("geradeaus", False, align="center")
turtle.forward(100)
turtle.left(120)
turtle.write("links", False, align="center")
# ----------------------------------
turtle.clearscreen()
# A2: Lasse die Turtle ein n-Eck zeichnen
turtle.speed(100)
# ----------------------------------
anzahlEcken = 20
for aktuelleEcke in range(0, anzahlEcken):
laenge = 200/anzahlEcken
turtle.forward(laenge)
#turtle.write("gerade", False, align="center")
turtle.forward(laenge)
turtle.left(360/anzahlEcken)
# ----------------------------------
turtle.clearscreen()
# A3: Lasse die Turtle ein Rechteckmuster zeichnen, bei dem jede zweite Abbiegung nach rechts, bzw. links geht
turtle.speed(100)
# ----------------------------------
for i in range(30):
turtle.forward(15)
if i%4 == 0:
turtle.left(90)
if i%4 == 1:
turtle.left(90)
if i%4 == 2:
turtle.right(90)
if i%4 == 3:
turtle.right(90)
# ----------------------------------
turtle.clearscreen()
# A3: Lasse die Turtle ein Zahnrad zeichnen.
turtle.speed(100)
# ----------------------------------
winkel = 15
for i in range(24):
turtle.forward(10)
if i%2 == 0:
turtle.left(90 + winkel)
if i%2 == 1:
turtle.right(90 - winkel)
# ----------------------------------
turtle.clearscreen()
# A4: Lasse die Turtle ein Zufallsmuster zeichnen, bei dem zu jeder Zufallszahl anders abgebogen wird
turtle.speed(100)
# ----------------------------------
turtle.speed(100)
gesamtweglaenge = 0
for i in range(0,100):
zufallszahl = random.randint(10,100)
richtung = random.randint(1,2)
zufallsweglaenge = random.randint(5,12)
gesamtweglaenge = gesamtweglaenge + zufallsweglaenge
turtle.forward(zufallsweglaenge)
if richtung%2 == 0:
turtle.left(zufallszahl)
else:
turtle.right(zufallszahl)
print("gesamte weglänge: ", gesamtweglaenge)
print("durchschnittliche weglänge pro hüpfer: ", gesamtweglaenge/100)
# ----------------------------------
turtle.clearscreen()
# A5: Zeitmessung: wer programmiert die schnellste Turtle: solange 10 Sekunden nicht abgelaufen sind,
# # A6: soll die Turtle einen Stern malen
turtle.speed(100)
# ----------------------------------
startzeit = time.monotonic_ns()
aktuellezeit = startzeit
zeitunterschied = 0
gesamtlaenge = 0
laenge = 3
turtle.speed(20)
while zeitunterschied < 1:
winkel = 2
turtle.forward(laenge)
gesamtweglaenge = gesamtweglaenge + laenge
turtle.left(90 + winkel)
turtle.forward(laenge)
gesamtweglaenge = gesamtweglaenge + laenge
turtle.right(90 - winkel)
aktuellezeit = time.monotonic_ns()
zeitunterschied = (aktuellezeit - startzeit) / 1000000000
print(zeitunterschied, laenge)
# ----------------------------------
turtle.clearscreen()
# A7: Fasse das Programm für das Zahnrad in eine Funktion und lasse drei Zahnräder malen
turtle.speed(100)
# ----------------------------------
def macheZahnrad():
winkel = 15
for i in range(24):
turtle.forward(10)
if i % 2 == 0:
turtle.left(90 + winkel)
if i % 2 == 1:
turtle.right(90 - winkel)
for i in range(10):
turtle.penup()
x = random.randint(0, screenbreite)
y = random.randint(0, screenhoehe)
turtle.setpos(x - screenbreite/2, y - screenhoehe/2)
turtle.pendown()
macheZahnrad()
# ----------------------------------
turtle.clearscreen()
# A8: Baue eine Funktion, in der man die Anzahl an Zähnen übergibt ....
turtle.speed(100)
# ----------------------------------
def macheZahnrad2(winkel):
anzahl = 360//winkel
laenge = 300/anzahl
for i in range(anzahl):
turtle.forward(laenge)
if i % 2 == 0:
turtle.left(90 + winkel)
if i % 2 == 1:
turtle.right(90 - winkel)
for i in range(2):
turtle.penup()
x = random.randint(0, screenbreite)
y = random.randint(0, screenhoehe)
randwinkel = random.randint(3,45)
turtle.setpos(x - screenbreite/2, y - screenhoehe/2)
turtle.pendown()
macheZahnrad2(randwinkel)
# ----------------------------------
turtle.clearscreen()
# A9: male eine Parabel und seine Ableitung
unterteilungen = 40
def quadrat(xwert):
y = xwert*xwert
return y
def meineFunktion(xwert):
y = 2*xwert*xwert*xwert - 2*xwert*xwert + 2*xwert
return y
def steigung(y1, y2, x1, x2):
steigung = (y1-y2)/(x1-x2)
return steigung
def macheKoordinaten():
turtle.speed(100)
global unterteilungen
turtle.penup()
turtle.setpos(-200,0)
turtle.pendown()
for i in range(2*unterteilungen):
turtle.forward(200/unterteilungen)
turtle.left(90)
turtle.forward(2)
turtle.backward(2)
turtle.right(90)
turtle.penup()
turtle.setpos(0, -200)
turtle.pendown()
turtle.left(90)
for i in range(2 * unterteilungen):
turtle.forward(200/unterteilungen)
turtle.left(90)
turtle.forward(2)
turtle.backward(2)
turtle.right(90)
xAlt = xNeu = yAlt = yNeu = 0
macheKoordinaten()
turtle.penup()
for i in range (-200,200,1):
xNeu = i/unterteilungen
yNeu = meineFunktion(xNeu)
turtle.setpos(i, yNeu)
turtle.pendown()
xAlt = xNeu
yAlt = yNeu
turtle.penup()
for i in range (-200,200,1):
xNeu = i/unterteilungen
yNeu = meineFunktion(xNeu)
turtle.setpos(i, steigung(yNeu, yAlt, xNeu, xAlt))
turtle.pendown()
xAlt = xNeu
yAlt = yNeu
turtle.exitonclick()
J1: Bubblesort
import random
import time
mL = []
listenlaenge = 1000
for i in range(listenlaenge):
meineVar = random.randint(1,1000)
mL.append(meineVar)
print(mL)
startzeit = time.monotonic_ns()
for j in range(0,listenlaenge-1): # Anzahl an Durchläufen
for index in range(0,listenlaenge-1-j): #Schleife für Durchlauf
if mL[0+index] > mL[1+index]: #Prüfen, ob man tauschen muss
tempVar = mL[0+index] # Ringtausch
mL[0+index] = mL[1+index] # Ringtausch
mL[1+index] = tempVar # Ringtausch
endzeit = time.monotonic_ns()
zeitdifferenz = (endzeit - startzeit)/1000000
print("Millisekunden:", zeitdifferenz)
print(mL)
J1: Selectionsort
import random
mL = []
listenlaenge = 10
for i in range(10):
meineVar = random.randint(1,100)
mL.append(meineVar)
print(mL)
for durchlaeufe in range(0,10):
# finde das größte element der liste
meinaktuellerindex = 0
meineaktuellgroesstezahl = mL[meinaktuellerindex]
for index in range(0,10-durchlaeufe):
if meineaktuellgroesstezahl < mL[index]:
meineaktuellgroesstezahl = mL[index]
meinaktuellerindex = index
# ringtausch
temp = mL[meinaktuellerindex] # grösster wert zwischenspeichern
mL[meinaktuellerindex]= mL[10-1-durchlaeufe] #letzte zahl in der liste hinkopieren
mL[10 - 1-durchlaeufe] = temp
print(mL)
J2: Kryptographie mit Python
Caesar-Verschluesselung eines Strings:
meinString = "hAlLo WeLt abcdefghijklmnopqrstuvwxyz"
meinString = meinString.upper()
# ASCII-ausgabe des unverschlüsselten strings
for x in range(0,len(meinString)):
print("Code(",meinString[0+x], "):", ord(meinString[0+x]), end=", ")
print()
print("String vorher: ", meinString)
# offset des ASCII-codes
offset = 10
verschluesselterString = ""
for x in range(0,len(meinString)):
asciitemp = ord(meinString[0+x])
if asciitemp != 32:
asciitemp = asciitemp +offset
if asciitemp>90:
asciitemp = asciitemp -26
verschluesselterString = verschluesselterString + chr(asciitemp)
print("Verschluesselt:", verschluesselterString)
entschluesselterString = ""
for x in range(0,len(verschluesselterString)):
asciitemp = ord(verschluesselterString[0+x])
if asciitemp != 32:
asciitemp = asciitemp -offset
if asciitemp<65:
asciitemp = asciitemp +26
entschluesselterString = entschluesselterString + chr(asciitemp)
print("Entschluesselt:", entschluesselterString)