Als txt-Datei herunterladen


# 6-1
# "Zwischen 0 und 30" kann auch anders aufgefasst werde, z.B. 1-29
for i in range(0, 31):
    print(i)
    # Wir benutzen den Modulo-Operator um zu schauen, ob die Zahl durch 3 geteilt einen Rest hat.
    if i % 3 == 0:
        print("Ich bin durch 3 teilbar.")

# 6-2
teiler = int(input("Bitte Teiler eingeben: "))
for i in range(0, 31):
    print(i)
    if i % teiler == 0:
        # Um den Multiplikator zu bekommen schauen wir einfach, wie oft der eingegebene Teiler in die aktuell Zahl passt.
        # Verwende doppeltes / um den Bruch direkt auf eine ganze Zahl zu bekommen.
        multiplikator = i // teiler
        print(
            "Ich bin durch",
            str(teiler),
            "teilbar, der Multiplikator ist",
            multiplikator,
        )

# 6-3
eingabe = input("Bitte Textzeile eingeben: ")
# Wir machen die gesamte Eingabe zu kleinen Buchstaben
eingabe = eingabe.lower()
# Die Schleife wird für jeden Buchstaben der Eingabe durchlaufen
for buchstabe in eingabe:
    # Ist der Buchstabe identisch mit EINEM Buchstaben in "aeiou"?
    if buchstabe in "aeiou":
        print(buchstabe)

# 6-4
zahl = int(input("Bitte geben Sie eine Zahl ein: "))
summe = 0
# Wir durchlaufen die Schleife von 0 bis zur eingegeben Zahl
# i ist im ersten Durchlauf = 0, dann =1, dann =2...
# Die obere Grenze muss um eins erhöht werden damit wir die letzte Zahl auch einschließen
for i in range(0, zahl + 1):
    summe = summe + i
print(summe)

# 6-5
# Befehl im Terminal ausführen und output direkt in neue Datei artikel.txt umleiten
# lynx -dump http://sz-magazin.sueddeutsche.de/texte/anzeigen/36659 > artikel.txt

# 6-6
# Wir öffnen eine Datei, indem wir den (GANZEN) Pfad angeben, 'r' heißt, dass wir die Datei nur lesen wollen.
# Die Datei wird im Filestream namens "f" gespeichert - ACHTUNG: in f steht noch nicht der reine Text der Datei.
with open("artikel.txt", "r") as f:
    # Wir lesen den reinen Text von f und speichern diesen in einer Variable
    text = f.read()
    # Wir spalten den Text an jeder neuen Zeile auf und durchlaufen eine Schleife für jede gefundene Zeile.
    for line in text.split("\n"):
        # Wir führen einen Zähler für das aktuelle Wort in der aktuellen Zeile ein und setzen diesen auf 0
        current_word = 0
        # Wir spalten die Zeile bei jedem Leerschritt auf und erhalten so Wörter, für jedes Wort laufen wir durch die Schleife
        for word in line.split():
            # Wenn das aktuelle Wort das erste der Zeile ist geben wir dieses aus, ansonsten machen wir nichts.
            if current_word == 0:
                print(word)
            # In jedem Fall erhöhen wir den Wortzähler um 1 - in der selben Zeile wird also kein Wort mehr ausgegeben.
            current_word += 1

# 6-7
# Leere Liste in der die einzelnen Wörter gespeichert werden
wortliste = []
with open("artikel.txt", "r") as f:
    text = f.read()
    for line in text.split("\n"):
        for word in line.split():
            # Jedes einzelne Wort wird ausgegeben und der Liste angehangen
            print(word)
            wortliste.append(word)

# Wir öffnen die Datei wortliste.txt mit dem Modus "w" für write/schreiben
# Wenn die Datei nicht vorhanden ist wird diese automatisch erzeugt
with open("wortliste.txt", "w") as f2:
    # Wir durchlaufen jedes Element/Wort der wortliste einzeln
    for element in wortliste:
        # Wir schreiben in die geöffnete Datei das aktuelle Wort/Element, gefolgt von einem Zeilenumbruch
        f2.write(element + "\n")

# 6-8
wortliste = []
# Variablen anlegen
zeilen = 0
woerter = 0
zeichen = 0
with open("artikel.txt", "r") as f:
    text = f.read()
    for line in text.split("\n"):
        # Zeilen eins erhöhen
        zeilen = zeilen + 1
        for word in line.split():
            # Wörter eins erhöhen
            woerter = woerter + 1
            print(word)
            wortliste.append(word)
            # Noch eine "Ebene tiefer gehen" wir durchlaufen die Wörter einzeln
            # Spaces werden so nicht mitgezählt, da wir die Wörter selber betrachten
            for buchstabe in word:
                # Zeichen um eins erhöhen
                zeichen = zeichen + 1
# Anzahl Zeilen, Wörter, Zeichen ausgegeben
print("Zeilen: ", str(zeilen), "- Wörter:", str(woerter), "- Zeichen:", str(zeichen))

with open("wortliste.txt", "w") as f2:
    for element in wortliste:
        f2.write(element + "\n")

# b)
# Das Programm liefert Zeilen:631 - Wörter:8965 - Zeichen:135633
# wc artikel.txt gibt Zeilen:630 - Wörter:8965 - Zeichen:151693 (Bei den Zeichen sind Leerzeichen mit wc grundsätzlich mitgezählt)

# 6-9
# Nach gesuchtem Wort fragen
suche = input("Nach welchem Wort soll gesucht werden? ")
treffer = 0
with open("artikel.txt", "r") as f:
    text = f.read()
    for line in text.split("\n"):
        for word in text.split():
            if word == suche:
                treffer = treffer + 1
print("Das gesuchte Wort kommt", str(treffer), "mal vor.")
# b)

#Die 5 häufigsten Vorkommen sind in meiner Datei:

cat artikel.txt | tr '[:upper:]' '[:lower:]' | tr −s ' ' '\n' | sort | uniq −c |
sort −n

66 die
59 und
57 der
31 den
21 zu

##Aufgabe 6-10##

:~ $ clear
:~ $ hd iso.txt
00000000  41 6e 74 6f 6e 0a                                 |Anton.|
00000006
~ $ hd utf8.txt
00000000  41 6e 74 6f 6e 0a                                 |Anton.|
00000006

#beide Ausgaben sind identisch


~ $ hd iso.txt
00000000  44 65 7a 2e 20 32 30 31  30 2c 20 31 32 3a 34 35  |Dez. 2010, 12:45|
00000010  0a                                                |.|
00000011
~ $ hd utf8.txt
00000000  44 65 7a 2e 20 32 30 31  30 2c 20 31 32 3a 34 35  |Dez. 2010, 12:45|
00000010  0a                                                |.|
00000011

#Beide Ausgaben sind wieder identisch


~ $ hd iso.txt
00000000  e4 e4 e4 20 fc fc fc 20  f6 f6 f6 0a              |... ... ....|
0000000c
~ $ hd utf8.txt
00000000  c3 a4 c3 a4 c3 a4 20 c3  bc c3 bc c3 bc 20 c3 b6  |...... ...... ..|
00000010  c3 b6 c3 b6 0a                                    |.....|
00000015


#bei ISO-Latin haben alle Umlaute nur 1 Byte, bei UTF-8 haben alle Umlaute 2 Byte


##Aufgabe 6-11##

BIN: 10000
DEZ: 16
OKT: 20
HEX: 10

BIN: 111111111
DEZ: 511
OKT: 777
HEX: 1FF

BIN: 11111111
DEZ: 255
OKT: 377
HEX: FF

BIN: 1000000000
DEZ: 512
OKT: 1000
HEX: 200