Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige ÜberarbeitungVorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
lesson:coding04 [2023/12/03 17:08] mccab99lesson:coding04 [2024/01/15 09:10] (aktuell) – Externe Bearbeitung 127.0.0.1
Zeile 3: Zeile 3:
 Um genauer zu verstehen, wie der OzoBot über die Blöcke tatsächlich gesteuert wird, brauchen wir einen kleinen Exkurs in das Programmieren mit Python. Zudem werden dir komplexere Programme mit den Blöcken viel besser gelingen, wenn du mehr über die Hintergründe und die Bedeutung der einzelnen Elemente weißt. Wir konzentrieren uns im ersten Schritt auf Bedingungen und Schleifen, müssen aber auch schon Variablen einführen. Um genauer zu verstehen, wie der OzoBot über die Blöcke tatsächlich gesteuert wird, brauchen wir einen kleinen Exkurs in das Programmieren mit Python. Zudem werden dir komplexere Programme mit den Blöcken viel besser gelingen, wenn du mehr über die Hintergründe und die Bedeutung der einzelnen Elemente weißt. Wir konzentrieren uns im ersten Schritt auf Bedingungen und Schleifen, müssen aber auch schon Variablen einführen.
  
-Damit wir keine Software auf dem Rechner installieren müssen, nutzen wir zum Programmieren eine Online-Umgebung.+Damit wir keine Software auf dem Rechner installieren müssen, nutzen wir zum Programmieren eine Online-Umgebung. Falls die eine nicht funktioniert, nutzt du einfach die andere
  
-[[https://www.online-python.com/]]+  - [[https://www.online-python.com/]] 
 +  - [[https://www.programiz.com/python-programming/online-compiler/]]
  
 Dort hinein kannst du deinen Code schreiben, laufen lassen und auch herunterladen. Dort hinein kannst du deinen Code schreiben, laufen lassen und auch herunterladen.
Zeile 153: Zeile 154:
 # Die Eingabe wird der Variablen name zugewiesen # Die Eingabe wird der Variablen name zugewiesen
 # durch int() wird die Eingabe in eine Ganzzahl umgewandelt # durch int() wird die Eingabe in eine Ganzzahl umgewandelt
-name = int(input("Gib deinen Namen ein: ")) +zahl = int(input("Gib eine ganze Zahl ein: ")) 
-print(name)+print(zahl)
 </file> </file>
 Es geht aber auch nachträglich: Es geht aber auch nachträglich:
 <file python cast_02.py> <file python cast_02.py>
 # Die Eingabe wird der Variablen name zugewiesen # Die Eingabe wird der Variablen name zugewiesen
-name = input("Gib deinen Namen ein: ")+zahl = input("Gib eine ganze Zahl ein: ")
 # jetzt umwandeln # jetzt umwandeln
-name = int(name+zahl = int(zahl
-print(name)+print(zahl)
 </file> </file>
 Du musst also ggf. den Datentyp ändern, wenn du mit den Eingabewerten rechnen möchtest! Du musst also ggf. den Datentyp ändern, wenn du mit den Eingabewerten rechnen möchtest!
Zeile 169: Zeile 170:
  
 ==== Aufgaben ==== ==== Aufgaben ====
-Du kannst alle Aufgaben online erledigen: [[https://www.online-python.com/]]. Dokumentiere deine Programme auf deiner Wikiseite, so wie ich es weiter oben gezeigt habe.+Du kannst alle Aufgaben online erledigen: [[https://www.online-python.com/]] oder [[https://www.programiz.com/python-programming/online-compiler/]]. Dokumentiere deine Programme auf deiner Wikiseite, so wie ich es weiter oben gezeigt habe.
  
 Schreibe ein Python-Programm, das Schreibe ein Python-Programm, das
Zeile 187: Zeile 188:
 ... dann wird es auch für dich beim Testen ein wenig spannender. ... dann wird es auch für dich beim Testen ein wenig spannender.
 </WRAP> </WRAP>
 +
 +==== Lösungen ====
 +
 +=== Aufgabe 1 ===
 +<file python zahlplus10.py>
 +zahl = input("Gib eine Zahl ein: ")
 +zahl = int(zahl)
 +print("Das Ergebnis lautet: ")
 +print(zahl+10)
 +</file>
 +
 +=== Aufgabe 2 ===
 +<file python copytovar.py>
 +eingabe = input("Gib etwas ein: ")
 +neu = eingabe
 +print("Ausgabe: ")
 +print(neu)
 +</file>
 +
 +=== Aufgabe 3 ===
 +<file python combinestrings.py>
 +teil01 = "Haus"
 +teil02 = "tier"
 +kombi = teil01+teil02
 +print(kombi)
 +</file>
 +
 +=== Aufgabe 4 ===
 +<file python linearfunc.py>
 +b = input("Gib die Steigung ein: ")
 +a = input("Gib den Offset ein: ")
 +b = int(b)
 +a = int(a)
 +x = 0
 +while x < 10:
 +    print(x*b+a)
 +    x = x + 1
 +</file>
 +
 +=== Aufgabe 5 ===
 +<file python guess_number.py>
 +import random
 +zufallszahl = random.randint(1,100)
 +
 +eingabe = input('Rate eine Zahl zwischen 1 und 100: ')
 +eingabe = int(eingabe)
 +
 +# eine beliebige Variable mit einem Wert
 +# wenn man gegen die Variable prüft, kommt immer "wahr" heraus
 +raten = True
 +
 +# Schleife läuft so lange, bis die Variable "raten" entweder "False" oder die Schleife mit "break" verlassen wird
 +while raten:
 +   if eingabe < zufallszahl:
 +      print('Zu klein!')
 +   elif eingabe > zufallszahl:
 +      print('Zu groß!')
 +   else:
 +      print('Du hast die Zahl gefunden!')
 +      raten = False
 +   if raten:
 +      eingabe = input('Dein nächster Versuch: ')
 +      eingabe = int(eingabe)
 +</file>
 +
 +
    
 === Codeanalysen === === Codeanalysen ===
Zeile 205: Zeile 272:
 else: else:
    print('Faules Kind!')    print('Faules Kind!')
 +</file>
 +
 +===== Arrays =====
 +Arrays sind spezielle Datenstrukturen, die mehrere Variablen enthalten können. Man nennt diese Variablen hier Elemente. Auf die einzelnen Elemente wird mit einem Index zugegriffen. Man beginnt bei der Zählung immer mit null. Arrays können alle Datentypen enthalten, jedoch sollten alle Elemente eines Arrays zunächst immer vom gleichen Typ sein.
 +
 +<WRAP center round info 60%>
 +Strenggenommen gibt es in Python eigentlich keine Arrays, sondern man kann Listen so wie Arrays verwenden, aber das ist erstmal eine Spitzfindigkeit.
 +</WRAP>
 +
 +<file python array_00.py>
 +autos = ["vw", "bmw", "toyota", "ford"]
 +noten = [1,2,3,4,5,6]
 +print(autos[0])
 +print(noten[2])
 +</file>
 +
 +=== Wichtige Arrayfunktionen ===
 +Oft braucht man die Länge eines Arrays. Das geht über die Funktion len(). Die Länge gibt die Anzahl der Elemente eines Arrays an.
 +
 +<file python array_01.py>
 +autos = ["vw", "bmw", "toyota", "ford"]
 +anzahl_autos = len(autos)
 +print(anzahl_autos)
 +</file>
 +
 +Manchmal muss man ein leeres Array mit einer vorgebenen Anzahl an Elementen vorbereiten (initialisieren).
 +
 +<file python array_02.py>
 +autos = [0]*10
 +</file>
 +
 +... erzeugt an Array aus 10 Elementen, die alle den Wert 0 besitzen.
 +
 +=== Die For-Schleife ===
 +Fast speziell für ein Array konzipiert ist die For-Schleife. Mit dieser kann man sehr bequem durch ein Array durchlaufen. Das geschieht in folgendem Code. Das Array "autos" hat vier Elemente - len(autos). 
 +
 +<file python array_02.py>
 +autos = ["vw", "bmw", "toyota", "ford"]
 +anzahl_autos = len(autos)
 +
 +for i in range(anzahl_autos):
 +    print(autos[i])
 +</file>
 +
 +range() gibt (für uns erstmal) an, wie oft die For-Schleife durchlaufen werden soll - in diesem Beispiel viermal. i ist die sogenannte "Laufvariable", die bei jedem Schleifendurchlauf beginnend mit Null um 1 erhöht wird (i=i+1).
 +
 +<WRAP center round info 60%>
 +Strenggenommen handelt es sich bei der Pythonversion der For-Schleife eigentlich um eine foreach-Schleife. Auch das ist eine Spitzfindigkeit.
 +</WRAP>
 + 
 +Wir können in range() auch einen Anfangswert übergeben:
 +
 +<file python array_03.py>
 +autos = ["vw", "bmw", "toyota", "ford"]
 +anzahl_autos = len(autos)
 +
 +for i in range(2,4):
 +    print(autos[i])
 +</file>
 +
 +Der letzte Code gibt nur die Array-Elemente 3 (autos[2]) und 4 (autos[3]) aus.
 +
 +==== Aufgaben ====
 +
 +=== Aufgabe 1 ===
 +Schreibe ein Programm, welches alle Elemente (mindestens 10) eines Arrays aus Integern aufsummiert.
 +
 +<file python loesung01.py>
 +notenspiegel = [1,2,2,1,1,3,1,2,3,4,1,2,1,1,1,1]
 +num_students = 0
 + 
 +for i in range(16):
 +    num_students = num_students + notenspiegel[i]
 +</file>
 +
 +=== Aufgabe 2 ===
 +Eine Klausuraufgabe lautete: "Schreibe ein Python-Programm, das den Durchschnitt des folgenden Punktespiegels einer Informatikklausur berechnet. Weiterhin soll der Prozentanteil der Klausuren unter 5 Punkten berechnet werden. Du darfst dazu nichts im Kopf addieren."
 +
 +Mohamed hat die Aufgabe als einziger richtig gelöst - allerdings ist der Code überhaupt nicht schön, weil ihm noch keine Arrays zur Verfügung standen.
 +
 +<file python mohamed.py>
 +l = 1*0+2*1+2*2+1*3+1*4+3*5+1*6+2*7+3*8+4*9+1*10+2*11+1*12+1*13+1*14+1*15
 +m = 1+2+2+1+1+3+1+2+3+4+1+2+1+1+1+1
 +n = str(l/m)
 +k = 1*0+2*1+2*2+1*3+1*4+3*5+1
 +p = 1+2+2+1+1+3+1
 +q = "Der Durchschnitt beträgt:" + n
 +h = str(k/p)
 +print(q)
 +print(h)
 +</file>
 +
 +Löse die Aufgabe, indem du Arrays verwendest. Nutze einmal dafür die dir schon bekannte While-Schleife und einmal die neue For-Schleife, schreibe also zwei Programme.
 +
 +Tipp: Speichere die Anzahl der Klausuren in einem Array mit 16 Elementen. Der Index repräsentiert dann einfach die Anzahl der Punkte. Welche weiteren Vorteile hat das Verfahren mit den Arrays für die Lehrkraft im Vergleich zu Mohameds Lösung?
 +
 +<file python loesung02.py>
 +notenspiegel = [1,2,2,1,1,3,1,2,3,4,1,2,1,1,1,1]
 +num_students = 0
 +num_students_failed = 0
 +sum_grades = 0
 +
 +for i in range(16):
 +    num_students = num_students + notenspiegel[i]
 +    sum_grades = sum_grades + (notenspiegel[i] * i)
 +
 +for i in range(4):
 +    num_students_failed = num_students_failed + notenspiegel[i]
 +
 +average = round(float(sum_grades/num_students),1)
 +failed = round(float(num_students_failed/num_students)*100,1)
 +
 +print("Durchschnitt: ",average)
 +print("Unter Schnitt: ",failed,"%")
 </file> </file>
Nach oben