# 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