python code optimieren?

Folgendes "Problem" bei meinem Code: Nun möchte ich jedoch, dass das Einrückungslevel nicht anhand des indentaion_level also der Anzahl der Punkte, welches ein Domainname enthält festgemacht wird, sondern ob in der liste die tsl, sld oder weiter subdomains eines Domainnamens enthalten sind. Ich vereinfache meine Erklärung mit einem Beispiel mit dem Domainnamen alles.doof . Wenn jetzt in der Domainnamenliste doof enthalten ist soll der domainname alles.doof einmal eingerückt werden. Wenn jetzt doof jedoch nicht in der liste enthalten ist, wird der domainname alles.doof keinmal eingerückt , da es keinen übergeordneten gibt. optimiere folgenden code dementsprechend:

file_path = 'C:\Übungen\\Algorithmus\\domain_eingabedatei.txt'
def read_domains(file_path):
with open(file_path, 'r') as file:
domains = [line.strip() for line in file]
return domains
#sortiert Domains nach umgekehrter Hierarchie: TLD zuerst, dann SLD und dann weitere Subdomains
def reverse_domain_key(domain):
return tuple(domain.split('.')[::-1])
def sort_domains(domains):
return sorted(domains, key=reverse_domain_key)
def print_domains_with_indentation(sorted_domains):
for domain in sorted_domains:
indentation_level = domain.count('.')
indented_domain = ' ' * indentation_level + domain
print(indented_domain)
if __name__ == "__main__":
#file_path = 'C:\Übungen\\Algorithmus\\domain_eingabedatei.txt'
#Einlesen der Domains
domains = read_domains(file_path)
# Sortieren der Domains
sorted_domains = sort_domains(domains)
#Ausgabe mit Einrückung
print_domains_with_indentation(sorted_domains)
programmieren, Programmiersprache, Python
Python, wo ist hier der Fehler?

Wir erhalten eine Liste mit Elementen, die in eine Datei geschrieben werden sollen. Dazu soll jedes Element der Liste jeweils mit der zusätzlichen Information, an welchem Index wir uns gerade befinden, versehen werden. (Siehe Beispielausgabe in der Tabelle.)

In dieser Aufgabe brauchen wir keinen zusätzlichen print()-Aufruf. Es sollen nur Inhalte in die Datei geschrieben werden; es soll also keine normale Ausgabe der Inhalte geben.

Tipp: Um sowohl Strings als auch Zahlen in die jeweils aktuelle Zeile zu schreiben, können Zahlen mit str() explizit in einen String umgewandelt werden. Dann können alle Teile der Ausgabe mit einem + aneinandergefügt werden.

Zum Beispiel:

filename = "tiere.txt"
elemente = ["Pinguin", "Nashorn", "Chamäleon", "Pinguin"]
Eintrag 1: Pinguin
Eintrag 2: Nashorn
Eintrag 3: Chamäleon
Eintrag 4: Pinguin

filename = "snacks.txt"
elemente = ["Schokolade", "Chips", "Bonbons", "Kuchen", "Käsebrot"]
Eintrag 1: Schokolade
Eintrag 2: Chips
Eintrag 3: Bonbons
Eintrag 4: Kuchen
Eintrag 5: Käsebrot

filename = "farben.txt"
elemente = ["blau", "gelb", "rot", "lila"]
Eintrag 1: blau 
Eintrag 2: gelb
Eintrag 3: rot
Eintrag 4: lila


Und meine Lösung wäre:

def write_to_file(filename, elemente):
    with open(filename, "w") as file:
        for index, element in enumerate(elemente, start=1):
            entry = "Eintrag " + str(index) + ": " + element + "\n"
            file.write(entry)

filename_tiere = "tiere.txt"
elemente_tiere = ["Pinguin", "Nashorn", "Chamäleon", "Pinguin"]
write_to_file(filename_tiere, elemente_tiere)

filename_snacks = "snacks.txt"
elemente_snacks = ["Schokolade", "Chips", "Bonbons", "Kuchen", "Käsebrot"]
write_to_file(filename_snacks, elemente_snacks)

filename_farben = "farben.txt"
elemente_farben = ["blau", "gelb", "rot", "lila"]
write_to_file(filename_farben, elemente_farben)


Computer, programmieren, Informatik, Python

Meistgelesene Beiträge zum Thema Python