Inf2Stuender

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)