# 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