%Teilweise Erzeugt mit dem LaTeX-Generator: http://latex.sehnot.de

%Schriftgröße, Layout, Papierformat, Art des Dokumentes
\documentclass[10pt,oneside,a4paper]{scrartcl}

%Einstellungen der Seitenränder
\usepackage[left=2cm,right=2cm,top=1.5cm,bottom=1.5cm,includeheadfoot]{geometry}

%neue Rechtschreibung
\usepackage[ngerman]{babel}

%Umlaute ermöglichen
\usepackage[utf8]{inputenc}

%Gesamtseitenzahl
\usepackage{lastpage}

% Kopf- und Fußzeile
\usepackage[automark]{scrpage2}

%Quellcode-Listings
\usepackage{listings}

%Hyperlinks
\usepackage{hyperref}

%Spalten
\usepackage{multicol}

%Kopfzeile
\ihead{Python}
\chead{}
\ohead{http://kohnlehome.de/python/grundlagen.pdf}
\setheadsepline{0.5pt}

%Fußzeile
\setfootsepline{0.5pt}
\ifoot{Franz Kohnle}
\cfoot{Seite \thepage\ von  \pageref{LastPage}}
\ofoot{\today}

\pagestyle{scrheadings}

\begin{document}

% Überschrift 
\begin{center}
\LARGE % Schriftgröße
\bfseries % Fettdruck
\sffamily % Serifenlose Schrift
Python-Grundlagen
\end{center}


\section*{Quellcode}
\begin{multicols}{3}
\subsection*{Dateiendung}
\begin{verbatim}
datei.py

\end{verbatim}

\columnbreak

\subsection*{Kommentare}
\begin{verbatim}
# bis zum Zeilenende

\end{verbatim}

\columnbreak

\subsection*{Codestyle}
\begin{verbatim}
PEP-8-Styling Guide
lower_case, snake_case 
\end{verbatim}

\end{multicols}

\section*{Ein- und Ausgabe in der Konsole}
\begin{multicols}{2}
\subsection*{Textausgabe}
\begin{verbatim}
print("Text1", "Text2", end="\n", sep=" ")
\end{verbatim}

\columnbreak

\subsection*{Texteingabe}
\begin{verbatim}
text = input("Frage? ") # string 
\end{verbatim}

\end{multicols}


\section*{Literale, Datentypen}
\begin{multicols}{2}
\subsection*{int}
\begin{verbatim}
123_456, -123456     # dezimal 
0o123                # 83 octal (zero-o)
0xff                 # 255 hexadezimal
{:.2f}.format(1.234) # '1.23'  
\end{verbatim}

\columnbreak

\subsection*{float}
\begin{verbatim}
2.5, -0.4, .4, 4., 3E8  
\end{verbatim}

\end{multicols}

\begin{multicols}{2}
\subsection*{string}
\begin{verbatim}
'I like "Monty Python"'
"I like \"Monty Python\""
Concatenation: "Text1" + "Text2"
Replication: "Text" * 3
'  text  '.strip()   # remove leading and trailing spaces
\end{verbatim}

\columnbreak

\subsection*{bool}
\begin{verbatim}
True
False
\end{verbatim}
\end{multicols}


\subsection*{noneType}
\begin{verbatim}
None
\end{verbatim}


\begin{multicols}{2}
\subsection*{Datentyp ermitteln}
\begin{verbatim}
type(...)


\end{verbatim}

\columnbreak

\subsection*{Typecasting}
\begin{verbatim}
float(...) 
int(...)
str(...) 
\end{verbatim}
\end{multicols}

\section*{Komplexe Datentypen}
\begin{multicols}{2}
\subsection*{list}
\begin{verbatim}
liste = [ 7, 5.0, 'abc']
len(liste)    # 3
liste[0]      # 7
liste[-1]     # 'abc'
liste.append(...)
del liste[1]  # 5.0 wird entfernt
\end{verbatim}

\columnbreak

\subsection*{dict (Dictionary)}
\begin{verbatim}
[ : , : , : ]

\end{verbatim}
\end{multicols}

\newpage


\section*{Operatoren}
\begin{multicols}{2}
\subsection*{arithmetisch}
\begin{verbatim}
+ - * / // % **    # // ist Floor divison
\end{verbatim}

\columnbreak

\subsection*{Zuweisung, Shortcut}
\begin{verbatim}
= += -= *= /= //= %= **=
\end{verbatim}

\end{multicols}

\begin{multicols}{2}
\subsection*{Vergleich}
\begin{verbatim}
< <= > >= == !=
\end{verbatim}

\columnbreak

\subsection*{logisch}
\begin{verbatim}
and or not
\end{verbatim}
\end{multicols}


\section*{Kontrollstrukturen}
\begin{multicols}{2}
\subsection*{Verzweigung}
\begin{verbatim}
if bedingung1:
    ...
elif bedingung2:
    ...
else:
    ...
    
    
    
    
    
    
    
    
\end{verbatim}

\columnbreak

\subsection*{Schleifen}
\begin{verbatim}
while bedingung:
    ...    

for item in [x, y, z]:
    # x, y, z
    
for zeichen in "abc":
    # 'a', 'b', 'c'
    
for zahl in range(3):
    # 0, 1, 2
    
for zahl in range(2, 11, 3):
    # 2, 5, 8
\end{verbatim}
\end{multicols}

\section*{Funktionen}
\begin{multicols}{2}
\subsection*{Definition}
\begin{verbatim}
def summe(zahl1, zahl2):
    return zahl1 + zahl2 
\end{verbatim}

\columnbreak

\subsection*{Aufruf}
\begin{verbatim}
ergebnis = summe(1,2)

\end{verbatim}
\end{multicols}

\section*{Klassen}
\begin{multicols}{2}
\subsection*{Definition}
\begin{verbatim}
class Person:
    def __init__(self, name):
        self.name = name
    
    def hallo(self):
        print("Servus " + self.name + "!")
\end{verbatim}

\columnbreak

\subsection*{Instanzen}
\begin{verbatim}
anna = Person("Anna")
berta = Person("Berta")

anna.hallo()
berta.hallo()

\end{verbatim}
\end{multicols}

\section*{Module}
\begin{multicols}{2}
\subsection*{Definition: myModule.py}
\begin{verbatim}
def function1():
    ....
    
def function2():
    ....            
\end{verbatim}

\columnbreak

\subsection*{Verwendung}
\begin{verbatim}
import myModule

myModule.function1()
myModule.function2()

\end{verbatim}
\end{multicols}


\end{document}
