Sven Krauß
Aufgabe: Systemupdate
Einteilung in zwei Gruppen!
print("Hallo Welt")
ida = 5
ida
paul = 42
paul
print("Ida ist", ida)
print("Paul ist", paul)
print("Zusammen sind sie", (paul + ida))
ida=paul
print("Zusammen sind sie", (paul + ida))
Demo
zahl = input("Gib eine Zahl ein: ")
quadrat = zahl*zahl
print("Das Quadrat ist:", quadrat)
(Im Interpreter)
var = -5
type(var)
var = 5.0
type(var)
var = "Hallo Welt"
type(var)
var = "55"
type(var)
var = int(var)
type(var)
if [Bedingung]:
[Anweisung]
...
elif [Bedingung]:
[Anweisung]
...
else:
[Anweisung]
...
Bedingungen können sein:
if [Bedingung]:
[Anweisung1] #Innerhalb der Bedingung
[Anweisung2] #Innerhalb der Bedingung
...
[Anweisung3] #Gehört NICHT zur Bedingung
Ein zusammenhängender Code-Block wird anhand der Einrückung identifiziert.
alter = input("Wie alt bist du? ")
alter = int(alter)
if alter < 10:
print("Kind")
elif alter < 18:
print("Jugendlich")
else:
print("Erwachsen")
Aufgabe:
Erweitere das Beispiel so, dass auch "Rentner" ab eine Alter von 65 ausgegeben wird.
while Bedingung:
Anweisung
...
break
Zahlenraten
from random import randint
print("Rate eine Zahl zwischen 1 und 100")
zufallszahl = randint(1,100)
zahl = int(input("Dein Vorschlag: "))
while zahl != zufallszahl:
if zahl < zufallszahl:
print("Zu klein")
else:
print("Zu groß")
zahl = int(input("Dein Vorschlag: "))
print("Richtig!")
Aufgabe für die Profis:
Wie kann das Programm geändert werden, so dass die Abfrage int(input(...)) nur einmal programmiert werden muss
for X in I:
Anweisung
...
break
Beispiel Fakultät
f = 1
for i in range(1,10):
f = f * i
print("Fakultät von:", 9, "ist", f)
f = 1
for i in range(1,10):
f = f * i
print("Fakultät von:", 9, "ist", f)
f = 1
for i in range(1,18):
f = f * i
print("Fakultät von:", 17, "ist", f)
def name(parameter, ...):
Anweisung
...
return Wert (optional)
Beispiel Fakultät
def faku(inp):
f = 1
for i in range(1, inp + 1):
f = f * i
print("Fakultät von:", inp, "ist", f)
faku(9)
faku(17)
Rückgabewerte
def faku(inp):
f = 1
for i in range(1, inp + 1):
f = f * i
return f
x = faku(9)
print("Fakultät von:", 9, "ist", x)
print("Fakultät von:", 13, "ist", faku(13))
Aufgabe:
Schreibe eine Funktion, dass die Fibonacci-Folge erzeugt und anzeigt. Die Länge der Folge soll mit einem Funktions-Parameter geändert werden können.
import random
import math
zufallszahl = random.randint(1,100)
s = math.sin(0.5)
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
import time
import RPi.GPIO as GPIO
led_pin = 18
GPIO.setmode(GPIO.BCM)
GPIO.setup(led_pin, GPIO.OUT)
try:
while True:
GPIO.output(led_pin, GPIO.HIGH)
time.sleep(0.5)
GPIO.output(led_pin, GPIO.LOW)
time.sleep(0.5)
except KeyboardInterrupt:
pass
GPIO.cleanup()
import time
import RPi.GPIO as GPIO
tast_pin = 17
GPIO.setmode(GPIO.BCM)
GPIO.setup(tast_pin, GPIO.IN, pull_up_down = GPIO.PUD_UP)
try:
while True:
time.sleep(0.5)
if GPIO.input(tast_pin) == GPIO.HIGH:
print("Taster (nicht) gedrückt")
else:
print("Taster (nicht) gedrückt")
except KeyboardInterrupt:
pass
GPIO.cleanup()
Aufgabe: Ändere das Programm so ab, dass nur die Ereignisse "Taste gedrückt" und "Taste losgelassen" ausgegeben werden.
import time
import RPi.GPIO as GPIO
tast_pin = 17
GPIO.setmode(GPIO.BCM)
GPIO.setup(tast_pin, GPIO.IN, pull_up_down = GPIO.PUD_UP)
# Callback-Funktion
def ereignis(channel):
print("Taster gedrückt")
GPIO.add_event_detect(tast_pin, GPIO.FALLING,
callback = ereignis, bouncetime = 200)
try:
while True:
time.sleep(0.5)
except KeyboardInterrupt:
pass
GPIO.cleanup()
Aufgabe: Ändere das Programm so ab, dass die LED genau 3x blinkt wenn der Taster gedrückt wird.
ip a
Server-Seite
netcat -l -p 50000
Client-Seite
netcat X.X.X.X 50000
import sys
import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.bind(("", 51000))
sock.listen(1)
while True:
print("Warte auf deinen Spieler ")
spieler, addr = sock.accept()
print("Spieler hat sich verbunden. Seine Adresse ist ", addr)
try:
while True:
print("Warte auf Frage...")
frage = spieler.recv(256)
if frage:
print("Emfangen: " + frage.decode())
antwort = input("Tippe die Antwort ein und dann ENTER: ")
spieler.sendall(antwort.encode())
else:
print("EOF")
break
finally:
spieler.close()
import sys
import socket
import time
spieler = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print("Verbinde zum Spieler ...")
spieler.connect(("10.2.15.154", 51000))
print("Verbunden")
try:
while True:
frage = input("Tippe deine Frage ein und dann ENTER: ")
spieler.sendall(frage.encode())
print("Warte auf die Antwort")
antwort = spieler.recv(256)
print("Antwort: " + antwort.decode())
finally:
print("Cleanup")
sock.close()
(1) Schließe einen Taster am Rasperry PI an. Bei Betätigung des Tasters soll eine Nachricht an den Client gesendet werden.
(2) Schließe eine LED am Rasperry PI an. Bei Empfang der Nachricht "an" soll die LED angehen und bei Emfang der Nachricht "aus" entsprechend aus.
Installation im Terminal:
sudo apt install sonic-pi
Ziel: Wir bauen ein Sensor, der in einem Winkel von 180 Grad den kleinsten Abstand zum Sensor bestimmt.
Dazu befestigen wir auf einem Servomotor ein Ultraschallsensor. Damit kann der Ultraschallsensor um 180 Grad gedreht werden.
Es soll ein Programm geschrieben werden, dass die Umgebung abscannt und im Anschluss den Sensor auf das Ziel richtet.
Bildet drei Gruppen, die jeweils ein Thema bearbeiten. Am Ende werden wir alles auf einem Raspberry Pi zusammenfügen.
def setze_position(winkel):
print("Neuer Winkel: ", winkel)
def messe_abstand():
return 0.0
def ermittle_winkel():
return -1
def programm():
winkel = ermittle_winkel()
if winkel >= 0:
print("Kleinster Abstand gefunden bei:", winkel)
setze_position(winkel)
else:
print("Nichts gefunden")
programm()


