S-Log („Sony-Log“) ist eine Bildprofil-Einstellung, die bei Sony-Kameras verwendet wird. Dieses Profil ermöglicht es, mehr Informationen in den Schatten- und Highlight-Bereichen eines Videos aufzuzeichnen, so, dass während der Postproduktion mehr Flexibilität bei der Farbkorrektur und Tonwertanpassung möglich ist.
Technische Momente, die im Zusammenhang mit S-Log beachten werden sollen:
(1) Belichtung während der Aufnahme: Da S-Log dazu neigt, das Bild flach und kontrastarm aussehen zu lassen, ist eine korrekte Belichtung während der Aufnahme entscheidend. Idealerweise sollten Sie die Belichtung so einstellen, dass das Histogramm im Kameradisplay oder -monitor gut ausbalanciert ist, ohne in den Schatten- oder Highlight-Bereichen Informationen zu verlieren.
(2) Farbkorrektur: In der Postproduktion können Sie den erweiterten Dynamikumfang von S-Log nutzen, um Farbkorrekturen und Tonwertanpassungen vorzunehmen. Sie können Schatten aufhellen und Highlights abdunkeln, um das gewünschte Aussehen zu erzielen. Hierbei ist es hilfreich, ein sogenanntes „Grading“ durchzuführen, um den visuellen Stil des Videos festzulegen.
(3) LUTs (Look-Up-Tables): Um das flache und kontrastarme Ausgangsbild von S-Log in ein ansprechenderes Bild umzuwandeln, können Sie Look-Up-Tables verwenden. LUTs sind vordefinierte Farbprofile, die auf das S-Log-Bild angewendet werden können, um es visuell ansprechender zu gestalten. Es gibt zahlreiche LUTs, die speziell für S-Log entwickelt wurden.
(4) Denoising und Schärfen: S-Log-Aufnahmen können dazu neigen, Rauschen zu erzeugen, insbesondere in den Schattenbereichen. Bei der Postproduktion ist es wichtig, angemessenes Denoising anzuwenden, um die Bildqualität zu verbessern. Ebenso können Sie auch Schärfen-Effekte hinzufügen, um die Details im Bild herauszuarbeiten.
(5) Export und Kompression: Das bearbeitete S-Log-Bild vor dem Export möglicherweise erneut angepasst werden muss, um im Zielmedium (z. B. Fernseher, Streaming-Dienste) gut auszusehen. Einige Plattformen verwenden bestimmte Farb- und Kontraststandards, die berücksichtigt werden müssen. Das exportierte Video muss dann gründlich überprüft werden.
Bei verschiedenen Kameraherstellern für ähnliche Bildprofile gibt es eigene vergleichbare mit S-Log Formate, z.B. Canon C-Log, Panasonic V-Log. Der Umgang mit diesen Profilen erfordert Verständnis, Übung und Experimentieren.
wp_admin
Rennpferde beim Sportwetten
Rennpferde beim Sportwetten
Aufgabe für Dictionary Comprehensions
Welches Rennpferd war zwischen 1970 und 1980 am längsten aktiv?
Hier sind die berümtsten Rennpferde ausgelistet:
1 | print('Liste berühmter Rennpferde:')<br />race_horses = {<br />'Acatenango': (1993, 2005),<br />'Hoof Hearted': (1973, 1978),<br />'Seabiscuit': (1933, 1947),<br />'Anita Hanjab': (1951, 1969),<br />'Oil Beef Hooked': (1989, 1997),<br />'Ben Timover': (1974, 1986),<br />'Secretariat': (1972, 1989),<br />'Sea the Moon': (2014, 2020)<br />}<br />print('race_horses:', race_horses) |
Schreiben Sie ein Programm, das mit Hilfe von Dictionary Comprehensions eine Auflistung der drei am längsten aktiv gewesenen Rennpferden:
{‚Pferdname1‘: n1, ‚Pferdname2‘: n2, ‚Pferdname3‘: n3}
Projekte: Python für Fortgeschrittene
Projekte aus Lernquellen
- Geld aus dem Buch „Python3 für Ausbildung“ (M.Weigend), S.288 (OOP)
- Abrechnung aus dem Buch „Python3 für Ausbildung“ (M.Weigend), S.294 (OOP)
- Farbtester aus dem Buch „Python3 für Ausbildung“ (M.Weigend), S.298 (OOP)
- Zahlenregen aus dem Buch „Python3 für Ausbildung“ (M.Weigend), S.301 (OOP)
- CodeCademy: A Sorted Tale (Sortierung von Daten)
- replit – online-Plattform mit Problemlösungen etc.
- CodeCademy: Pokémon (OOP)
- CodeCademy: Adopt a Pet (Web-Anwendung, Flask)
- Turm von Hanoi aus dem Buch „Der Weg zum Profi“ (A. Sweigart) , S.288-301)
- Vier gewinnt aus dem Buch „Der Weg zum Profi“ (A. Sweigart) , S. 301-306)
- Plagiarism Checker (PDF zum herunterladen)
- Wie spät ist es? (I) aus dem Buch „Python3 für Ausbildung“ (M.Weigend), S.371 (Webseiten)
- Wie spät ist es? (II) aus dem Buch „Python3 für Ausbildung“ (M.Weigend), S.383 (Webseiten)
- Umfrage aus dem Buch „Python3 für Ausbildung“ (M.Weigend), S.386 (Webseiten)
- Wie spät ist es? (III) aus dem Buch „Python3 für Ausbildung“ (M.Weigend), S.393 (Webseiten)
- Wie spät ist es? (IV) aus dem Buch „Python3 für Ausbildung“ (M.Weigend), S.320 (Webseiten)
Fragen zu Objektorientierte Programmierung
Fragen zu Objektorientierte Programmierung
- Was bedeutet Objektorientierte Programmierung?
- Auf welchen Prinzipien ist OOP basiert?
- Was sind Klassen und Objekte?
- Wie wird eine Klasse definiert und wie wird sie in der UML dargestellt?
- Was ist Konstruktor?
- Wie werden private und public Instanzvariablen erzeugt?
- Was sind Getter und Setter?
- Wie werden Objekte einer Klasse erzeugen?
- Wie kann man auf Attribute einer Klasse Zugreifen?
- Wie kann man Methoden einer Klasse aufrufen?
- Wie können Objekte mit variablen Anfangswerten erzeugt?
- Was sind Metaphern in Bezug zur OOP?
- Was sind Klassenattribute?
- Wie wird Polymorphie in Python realisiert?
- Wie ist die Relation zwischen Typ und Klasse?
- Was sind in Python Magische Methoden?
- Wie wird in Python die Vererbung realisiert und wie sie wird in der UML dargestellt?
- Was ist eine Hash-Funktion?
- Wie wird Mehrfachvererbung realisiert?
- Wa bedeutet Operator Overloading?
- Was sind ed-hoc-Objekte?
1. Square Numbers and Return Their Sum
In this challenge, you need to implement a method that squares passing variables and returns their sum.
Problem statement
Implement a class Point that has three properties and a method. All these attributes (properties and methods) should be public. This problem can be broken down into two tasks:
Task 1
Implement a constructor to initialize the values of three properties: x, y, and z.
Task 2
Implement a method, sqSum(), in the Point class which squares x, y, and z and returns their sum.
Sample properties: 1, 3, 5
Sample method output: 35
Coding exercise
First, take a close look at the slides above and then design a similar step-by-step algorithm before jumping to its implementation.
1 2 3 4 5 6 7 8 | class Point: def __init__(self): self.x = x self.y = y self.z = z def sqSum(self): pass |
Solution
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | class Point: def __init__(self, x, y, z): self.x = x self.y = y self.z = z def sqSum(self): a = self.x * self.x b = self.y * self.y c = self.z * self.z return(a + b + c) obj1 = Point(4, 5, 6) print(obj1.sqSum()) |
Explanation
Task 1:
We passed parameters and assigned them to their corresponding properties.
Task 2:
We calculated the squares of the properties by multiplying them with itself and stored them in a variable.
Then, we added all the squared numbers.
Finally, we returned their sum
2. Calculate the Student’s Performance
In this challenge, you need to implement a method that squares passing variables and returns their sum.
Problem statement
In this exercise, you have to calculate a student’s total marks using the concept of Classes.
Problem statement
Implement a class – Student – that has four properties and two methods. All these attributes (properties and methods) should be public. This problem can be broken down into three tasks.
Task 1
Implement a constructor to initialize the values of four properties: name, phy, chem, and bio.
Task 2
Implement a method – totalObtained – in the Student class that calculates total marks of a student.
Sample properties:
1 2 3 4 | name = Mark phy = 80 chem = 90 bio = 40 |
Sample method output: obj1.Total()=210
Task 3
Using the totalObtained method, implement another method, percentage, in the Student class that calculates the percentage of students marks. Assume that the total marks of each subject are 100. The combined marks of three subjects are 300.
The formula for calculating the percentage:

Sample input:
1 2 3 | phy = 80 chem = 90 bio = 40 |
Sample output: 70
Coding exercise
Design a step-by-step algorithm before jumping to the implementation.
1 2 3 4 5 6 7 8 9 | class Student: def __init__(self): pass def totalObtained(self): pass def percentage(self): pass |
Solution
1 2 3 4 5 6 7 8 9 10 11 12 | class Student: def __init__(self, name, phy, chem, bio): self.name = name self.phy = phy self.chem = chem self.bio = bio def totalObtained(self): return(self.phy + self.chem + self.bio) def percentage(self): return((self.totalObtained() / 300) * 100) |
Explanation
In line 3 – 6, we have initialized name, phy, chem, and bio as public properties in the class initializer.
In line 9, we have then defined the totalObtained() method. In this method, we added individual marks of all the subjects and returned the sum.
At last in line 12, we defined percentage(). In this method, we called totalObtained() and used its value to calculate the percentage.
300
300
is the total number of marks for a student.
3. Implement a Calculator Class
In this exercise, you have to implement a calculator that can perform addition, subtraction, multiplication, and division.
Problem statement
Write a Python class called Calculator by completing the tasks below:
Task 1
Initializer:
Implement an initializer to initialize the values of num1 and num2
Properties:
num1
num2
Task 2
Methods:
add() is a method that returns the sum of num1 and num2.
subtract() is a method that returns the subtraction of num1 from num2.
multiply() is a method that returns the product of num1 and num2.
divide() is a method that returns the division of num2 by num1.
Input:
Pass numbers (integers or floats) in the initializer.
Output:
addition, subtraction, division, and multiplication
Sample input:
1 2 3 4 5 | obj = Calculator(10, 94); obj.add() obj.subtract() obj.multiply() obj.divide() |
Sample method output:
1 2 3 4 | 104 84 940 9.4 |
Coding exercise
Design a step-by-step algorithm before jumping to the implementation.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | class Calculator: def __init__(self): pass def add(self): pass def subtract(self): pass def multiply(self): pass def divide(self): pass |
Solution
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | class Calculator: def __init__(self, num1, num2): self.num1 = num1 self.num2 = num2 def add(self): return (self.num2 + self.num1) def subtract(self): return (self.num2 - self.num1) def multiply(self): return (self.num2 * self.num1) def divide(self): return (self.num2 / self.num1) demo1 = Calculator(10, 94) print("Addition:", demo1.add()) print("Subtraction:", demo1.subtract()) print("Mutliplication:", demo1.multiply()) print("Division:", demo1.divide()) |
Explanation
We have implemented the Calculator class, which has the two properties, num1 and num2.
In the initializer, at line 3 – 4, we have initialized both properties, num1 and num2.
In line 7, we implemented add(), a method that returns the sum, num1 + num2, of both properties.
In line 10, we implemented subtract(), a method that returns the subtraction of num1 from num2.
In line 13, we implemented multiply(), a method that returns the product, num2 x num1, of both properties.
In line 16, we implemented divide(), a method that returns the division of num2 by num1.
Funktionen in Python
def add(p1, p2):
sum = p1 + p2
return sum
print(add(2, 4))
Prozedurale Programmierung
Die prozedurale Programmierung ist ein Programmierparadigma unter vielen anderen.
Bei der prozeduralen Programmierung wird ein Programm in kleinere Teile, sogenannte Methoden, unterteilt. Diese Methoden sind die grundlegenden Einheiten , die zum Erstellen eines Programms verwendet werden. Einer der Hauptvorteile der prozeduralen Programmierung ist die Wiederverwendbarkeit des Codes. Allerdings wird die Umsetzung eines komplexen realen Szenarios zu einer schwierigen und umständlichen Aufgabe.
Dart & Flutter Links
https://dartpad.dev/
Ingo zum Buch „Flutter-Apps für Dummies“ https://losfluttern.de/pummelthefish/
Zusatzmaterialien zum Buch https://github.com/novas1r1/pummel_the_fish
Network: https://www.meetup.com/pro/flutter/
Google Developer Group: https://gdg.community.dev/
Podcast: https://podcasters.spotify.com/pod/show/flutter-dach
https://stackoverflow.com/
https://docs.flutter.dev/
https://dart.dev/guides
Flutter Grundkurs 1 (Saban Ünlü):
https://www.linkedin.com/learning/flutter-grundkurs-1-okosystem-entwicklungsumgebung-einrichten/in-die-plattformubergreifende-applikationsentwicklung-mit-flutter-einsteigen?resume=false&u=36053084
Lernquellen
1. Programmiersprachen in 10 Minuten(Thomas Rose, LinkedIn Learning)
2. Dart Clean Code: Writing High-Efficiency, Maintainable Dart Programs (Temidayo Adefioye, LinkedIn Learning)
3. Flutter Essential Training: Build for Multiple Platforms (Pooja Bhaumik, LinkedIn Learning)
4. Flutter Grundkurs 1 (Saban Ünlü, LinkedIn Learning)
5. W3school (Syntax nachschlagen + Übungen)
6. Dart & Flutter: Zerro to Master [2023] (Maximilian Berktold,Udemy)
7. Dart Tutorial (Geeks For Geeks)
Links
QUIZ: Grundlagen der Programmierung (Basiswissen)
Stack Overflow
Dart-Projekt in der Konsole
#Command-line and server apps
dart консольный проект
после инсталляции dart-sdk в zsh:
==> Caveats
Please note the path to the Dart SDK:
/usr/local/opt/dart/libexec
==> Summary
🍺 /usr/local/Cellar/dart/2.19.6: 1,040 files, 639.9MB, built in 29 seconds
==> Running `brew cleanup dart`…
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
https://dart.dev/tutorials/server/get-started
Dart: Variablen
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | // DART-SPIELWIESE (Listing 1.1) void main() { // main(): Einstiegspunkt einer Dart-Anwendung print('Hallo Dart'); // Info: es gibt in Dart KEINE char wie Java für einzelne Zeichen // alles ist quasi ein String wenn Anführungszeichen benutzt werden // einzeiliger Kommentar /* * * mehrzeiliger Kommentar * */ |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95 // DART-SPIELWIESE (Listing 1.1)
void main() { // main(): Einstiegspunkt einer Dart-Anwendung
print('Hallo Dart');
// Info: es gibt in Dart KEINE char wie Java für einzelne Zeichen
// alles ist quasi ein String wenn Anführungszeichen benutzt werden
// einzeiliger Kommentar
/*
*
* mehrzeiliger Kommentar
*
*/
//
// VARIABLEN (Container um Daten bzw. Werte abzulegen)
//
// in Dart werden Variablen mit dem Schlüsselwort var deklariert
// Hinweis: wenn wir keinen Wert zuweisen
// dann entscheidet Dart für uns bzw. machen die Variable "dynamic"
var x; // noch keinen Wert zugewiesen
print(x); // null (Variable OHNE Wert)
// jederzeit den aktuellen Datenytyp einer Variable zur Laufzeit ausgeben
print(x.runtimeType); // Null (kein Datentyp festgelegt)
// einer Variable einen Wert zuweisen: also initialisieren
// Beispiel: y mit Wert 42 (also Ganzzahl bzw. int)
var y = 42; // int-Objekt
print(y.runtimeType); // int
//print(z); // undefined, also Error weil z vorher nicht definiert wurde
// direkte Werte ausgeben an Konsole OHNE Zwischenweg über Variablen
print(42);
print('42');
// Datentyp String
// Beispiel Variable erzeugen namens "vorname" mit Wert "Peter"
var vorname = 'Peter';
print(vorname);
// Spezialfall "dynamic" (Vorteil: Flexibilität)
dynamic z; // ohne Wertzuweisung
z = 5;
z = "Hugo";
print(z);
print(z.runtimeType);
// per dynamic zur Laufzeit zB statt eines int-Wert einen String-Wert zuweisen
// Hinweis: warum wird Datentyp "int" klein geschrieben
// Historische Gründe, d.h. int ist zwar KEIN primitiver Datentyp
// sondern ein Objekt der Klasse int, aber in Java nutzt man auch diese Schreibweise für int, double,...
//int zahl = 7;
//
// DATENTYPEN
//
/*
* int Ganzzahl 5, -13, 0
* double Fließkommazahl 3.14, -18.0, 13.999
* num Numerisch 3.14, 5
* (Kombi aus Ganz-und Kommazahl)
* bool Boolean / Wahrheitswert true, false
* String Zeichenkette 'Bob', "Pete"
* List Liste mit mehren Elementen bzw. Array ['Berlin', 'Hamburg', 55]
* Map Schlüssel/Werte-Paare (key/value) {'x':8, 'y':16}
* dynamic jeder Typ (flexibel)
*
*/
// Beispiel mit num:
num zahl = 5;
zahl = 3.14;
print(zahl);
//double a;
// leere Variablen erzeugen zu den jew. oben genannten Datentypen
int alter;
double gewicht;
bool istOnline; // camelCase-Schreibweise
String name;
List hobbies;
Map json;
dynamic ort = 'Hamburg';
ort = 100;
}
Stoffplan: Avid
Stoffplan
1. Einführung in die Avid Media Composer Umgebung
1.1. Die Arbeitsoberfläche 1.2 Projektaufbau und Organisation2. Mit Ordnern (bins) arbeiten
2.1 Navigation und Marking Clips 2.2 Projekte sichern3. Avid Prinzipien
3.1 Medienformate einspeisen 3.2 Aufnahmen für das Editieren vorbereiten 3.3 Aufnahmen mit dem Smart Tool verschieben und trimmen 3.4 Musik hinzufügen und mischen 3.5 Für das Web exportieren4. Medien importieren und das Projekt organisieren
4.1 Medien über AMA (Avid Media Access) verlinken 4.2 Arbeiten mit FrameFlex 4.3 Material konsolidieren und transkodieren 4.4 Mit High-Resolution Dateien arbeiten 4.5 Auf Ordner (bins) anderer Projekte zugreifen5. Rohschnitt anlegen
5.1 Die Grundlage anlegen 5.2 Material hinzufügen und entfernen 5.3 Das Smart Tool anwenden 5.4 Material ersetzen 5.5 Editieren mit drag-and-drop 5.6 Top and Tail6. Den Schnitt verfeinern
6.1 Singe-roller und dual-roller Trims anwenden 6.2 Editieren mit slip and slide 6.3 Sync verstehen und reparieren7. Techniken für die Navigation und Anpassung
7.1 Tastenkürzel für die Navigation und die Tastatur anpassen 7.2 Die Zeitleiste anpassen 7.3 Workspaces einrichten und speichern 7.4 Das Find Tool verwenden8. Grundlagen Audio
8.1 Audio Levels, Panning und Multichannel verstehen 8.2 Audio Mixer verwenden 8.3 Audio Keyframes 8.4 Video und Audio synchronisieren9. Mit Standbildern arbeiten
9.1 Standbilder animieren 9.2 Mit Ebenen aus Photoshop-Dateien arbeiten10. Effekte
10.1 Traditionelle Übergänge einsetzen 10.2 Effekte im Effekte Editor editieren 10.3 Effekte Keyframes 10.4 Effekte Verschachteln (Nesting) 10.5 Timewarp anwenden 10.6 Mit Green-Screen Material umgehen
Projekt: Visittenkarte (HTML, CSS, JS)
alert("Hallo Welt");
//oder
window.alert("Hallo Welt");
confirm("Stimmen Sie meiner Meinung zu?")
//oder
window.confirm("Stimmen Sie meiner Meinung zu?")
confirm("Stimmen Sie meiner Meinung zu?")
//oder
window.confirm("Stimmen Sie meiner Meinung zu?")
Stoffplan: Dart&Flutter 1
1. Einführung in Flutter
1.1 Installation von Flutter 1.2 Einrichtung der Entwicklungsumgebung 1.3 Flutter Grundkonzepte 1.4 Ausführung eines Default-Projektes 1.5 Struktur des Projektes 1.6 Bibliotheken und Pakete2. UI-Modell und Styling
2.1 Struktur der Benutzeroberfläche (Scaffold) 2.2 UI-Elemente in Flutter (Widgets) 2.3 Material Design und Cupertino 2.4 Stateless vs. Stateful Widgets 2.5 Widget-Eigenschaften 2.6 Layout mit und ohne State 2.7 Templates anbinden3. Widgets in Flutter
3.1 Grundlegende Widgets 3.3 Anatomy des Widgets 3.4 Arten der Widgets 3.5 Eigene Widgets erstellen4. Navigation zwischen Benutzeroberflächen
4.1 Definition einer "Route" in Flutter 4.2 “anonym”- und “named Navigator” 4.3 Übergänge zwischen Bildschirmen5. Datenmanipulation
5.1 Operationen und Kontrollstrukturen 5.2 Methoden und Funktionen 5.3 Listen und Maps6. Basistechniken der Code-Organisation
6.1 Refactoring 6.2 Dateispeicherung (dart:io) 6.3 Shared Preferences7. Animationen
7.1 expliziten und impliziten Animationen 7.2 Tween-Animationen 7.3 Kurvenbasierte Animationen 7.4 Physikbasierte Animationen8. Einführung in State Management
8.1 Widget- und Element-Bäume 8.2 Life-Cycles und States 8.3 initState( ) und setState( ) Methoden9. Projektverwaltung
9.1 Kommentirung 9.2 Umgang mit Fehlern in Flutter 9.3 Versionskontrolle 9.4 Export des Projektes für verschiedene Plattformen
place()-Methode in Tkinter
Syntax:
widget.place(relx = 0.5, rely = 0.5, anchor = CENTER)
The Place geometry manager is the simplest of the three general geometry managers provided in Tkinter. It allows you explicitly set the position and size of a window, either in absolute terms, or relative to another window. You can access the place manager through the place() method which is available for all standard widgets. It is usually not a good idea to use place() for ordinary window and dialog layouts; its simply too much work to get things working as they should. Use the pack() or grid() managers for such purposes.
GeSHi Error: GeSHi could not find the language lang (using path /homepages/0/d971837894/htdocs/clickandbuilds/wordpress_invario/wp-content/plugins/codecolorer/lib/geshi/) (code 2)
Note : place() method can be used with grid() method as well as with pack() method.
When we use pack() or grid() managers, then it is very easy to put two different widgets separate to each other but putting one of them inside other is a bit difficult. But this can easily be achieved by place() method. In place() method, we can use in_ option to put one widget inside other.
GeSHi Error: GeSHi could not find the language lang (using path /homepages/0/d971837894/htdocs/clickandbuilds/wordpress_invario/wp-content/plugins/codecolorer/lib/geshi/) (code 2)
Gehaltberechnung
Geben Sie Ihr Gehalt in Euro ein:
2500
Es ergibt sich eine Steuer von 450.0 Euro
Inch in Zentimeter Umwandler
Bitte geben Sie den Inch-Wert ein: 3.5
3.5 Inch sind 8.89 cm
Spiel: Rechnen trainiren
1 2 3 4 5 6 7 8 9 | a=5 b=3 c=a+b print(f"Die Aufgabe: {a} + {b}") print("Bitte Lösungsvorschlag eingeben:") z = input() zahl = int(z) print("Ihre Eingabe:", z) print("Das Ergebnis:", c) |
Weihnachtsbaum-1
Schreibe ein Programm, das die folgenden Muster in der Konsole ausgibt:

Lösung
Tipps:
String-Ausgabe mit Leerzeichen in print(), und benutzen Sie weitere parameter der Build-In Funktion print()
Stoffplan: Python 1
1. Python installieren
2. Erste Schritte
2.1 Python an der Eingabeaufforderung
2.2 Ein erstes Programm erstellen
2.3 Das Programm ausführen
3. Die Programmiersprache Python
3.1 Variablen und Operatoren
3.2 Verzweigungen
3.3 Schleifen
3.4 Funktionen
3.5 Datentypen
3.6 Fehlerbehandlung in Python-Programmen
4. Objektorientierte Programmierung
4.1 Klassen
4.2 Konstruktoren, Destruktoren
4.3 Methoden
4.4 Vererbung
5. Benutzeroberflächen mit "Tkinter"