Flask-Project

Flask is a web development framework developed in Python. It is easy to learn and use. Flask is “beginner-friendly” because it does not have boilerplate code or dependencies, which can distract from the primary function of an application.

Features of Flask

Some features which make Flask an ideal framework for web application development are:

  1. Flask provides a development server and a debugger.
  2. It uses Jinja2 templates.
  3. It is compliant with WSGI 1.0.
  4. It provides integrated support for unit testing.
  5. Many extensions are available for Flask, which can be used to enhance its functionalities.

Flask is known as a micro-framework because it is lightweight and only provides components that are essential. It only provides the necessary components for web development, such as routing, request handling, sessions, and so on. For the other functionalities such as data handling, the developer can write a custom module or use an extension.

Who is Using Flask?
  • Netflix
  • Reddit
  • Airbnb
  • Lyft
  • Mozilla
  • MIT
  • Uber

Grundlagen von XML und XSLT

XML (Extensible Markup Language) ist eine Auszeichnungssprache, die zur strukturierten Darstellung von Daten verwendet wird. Sie ermöglicht die Erstellung benutzerdefinierter Tags und Hierarchien zur Repräsentation verschiedener Datentypen.

XML wird als standardisiertes Format häufig zur Übertragung und Speicherung von Daten zwischen verschiedenen Systemen oder Plattformen verwendet.
Bausteine von XML: Tags(Elemente), Attribute(Informationen über Elemente) und Text werden in eine hierarchische Struktur kombiniert.
XML-Dokumente können über Erstellung von XML-Schemas validiert werden. Ein XML-Schema definiert die Struktur und die Regeln für die erlaubten Elemente und Attribute im XML-Dokument.

Das Einlesen und Analysieren von XML-Daten wird als „Parsing“ bezeichnet. Mit Hilfe von Bibliotheken wie, z.B. xml.etree.ElementTree und lxml können wir XML-Dateien parsen und auf ihre Inhalte zugreifen.

XSLT (Extensible Stylesheet Language Transformations) ist eine Sprache, mit der XML-Daten in andere Formate transformiert werden können, z.B. in HTML, Text oder andere XML-Strukturen.
XSLT verwendet Stylesheets(Anhäufung von Regeln Elemente in XML), um Transformationen zu definieren.
(-> Bibliotheken wie, z.B. lxml, xml.etree.ElementTree für die Verarbeitung von XSLT-Transformationen)

XML und XSLT werden bei der Webentwicklung, Datenintegration, Generierung von Berichten etc. eingesetzt.
XML erleichtert die Datenkommunikation und -integration zwischen verschiedenen Anwendungen, Plattformen und Systemen, da es eine standardisierte Struktur für den Datenaustausch bietet.

Datenverwalten: Streams und Dateien

Datenverarbeitung: Mechanismen, um Daten aus verschiedenen Quellen zu lesen, zu schreiben und zu verwalten.
Streams: Große oder kontinuierliche Datenmengen schrittweise zu verarbeiten, ohne alles auf einmal im Speicher zu haben.(->bessere Nutzung von Speicher)
Dateiverarbeitung: Das Öffnen, Lesen, Schreiben und Schließen von Dateien über spezielle Funktionen und Methoden (open(), close() etc.)
Arbeiten mit Dateiinhalten: Das Lesen und Schreiben von Text- und Binärdateien (Textdateien werden in Zeichenketten interpretiert,  Binärdateien sind rohe Bytes).
Kontext-Managern: Mit with-Statement Dateien sicher geöffnen und schließen ( -> potenzielle Fehler vermieden)
CSV und JSON für strukturierte Daten: Das Lesen und Schreiben von speziellen Formaten CSV (Comma-Separated Values) und JSON (JavaScript Object Notation)

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)

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.