Anfänger Python bitte um etwas Unterstützung

Python in C/C++ embedden, C-Module, ctypes, Cython, SWIG, SIP etc sind hier richtig.
Antworten
gregor3008
User
Beiträge: 2
Registriert: Sonntag 5. Juni 2022, 18:43

Hallo alle zusammen,
ich versuche das Thema so klar wie möglich zu erklären.

Ich versuche zwei unterschiedliche "text.txt" Dateien auszulesen die bei der Console den Text "Horizontal" anzeigen soll.
Laut Internet gebe es in Python die Funktion "paste()" aber es stellt sich fest das dieser Befehl nur für PIL (Python Image Library) also nur für Bilder diese Funktion wäre.

! Außerdem gibt es diese "paste()" Befehl unter Python gar nicht.

Dan bin ich auf die UNIX Tools gestoßen wobei das auch für mich fraglich ist wie ich diese Funktionen so benützen kann unter Python...

Hier ein Link:
https://en.wikipedia.org/wiki/Paste_(Un ... d%20output. zu das Thema...


Mein Alternativer Code unter Python den ich geschrieben habe:
Infos: Ich arbeite mit PyCharm Community Edition, für verbesserte coden bzw. schöneres Coden wäre ich willkommen heißen :)

Code: Alles auswählen


#String daten öffnen
d1 = open("names.txt", "r")
d2 = open("numbers.txt", "r")

#Füge Text file1 u. file2 zusammen und öffne

def paste(d1, d2):
    print()
    file1 = open(d1)
    file2 = open(d2)

#Liste Aufstellung
    maxi = 0
    liste = []
#String für zusammen resultat  paste + paste_d


    for line in file1:
        liste.append(line.strip())
        if len(line.strip()) > maxi:
            maxi = len(line.strip())
            maxi += 1
            rS = ""

    for line in liste:
        string = line
        for i in range(maxi - len(string)):
            string += " "
        string += file2.readline().strip() + "\n"

#Aufgabe b - paste_d
def paste_d(separator, data1, data2, rS=None):
    file1 = open(data1)
    file2 = open(data2)

    for line in file1:
        rS += (line.strip() + separator + file2.readline().strip() +"\n")

Leider bekomme ich 0 Antwort unter Console <.<

Bin leider im Python ein Anfänger, bitte um Entschuldigung wenn da Fehler da sind. :-/
Sirius3
User
Beiträge: 17712
Registriert: Sonntag 21. Oktober 2012, 17:20

Erster Schritt wäre, ein Grundlagentutorial durchzuarbeiten. Wenn man noch keine Erfahrung mit einer Programmiersprache hat, dann helfen einem "Antworten" aus dem Internet nicht wirklich weiter.
Dein Code macht außer zwei Dateien zu öffnen und zwei Funktionen zu definieren, nichts, es ist also auch nicht verwunderlich, dass auf der Console nichts angezeigt wird.

Jetzt wäre es noch schön zu wissen, warum Du für diese Aufgabe ausgerechnet Python ausgesucht hast. Ich vermute ja mal, dass es sich um Hausaufgaben handelt.
Benutzeravatar
__blackjack__
User
Beiträge: 13006
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@gregor3008: Das sieht auch deswegen extrem nach Hausaufgabe aus, weil das nicht das erste mal ist, das jemand ``paste`` aus den Unix-Tools nachprogrammieren ”will”/soll, und hier nachfragt.

Der Sinn von Programmieraufgaben ist üblicherweise nicht, das man eine Funktion sucht und findet, die genau das Problem löst, oder auch Code aus dem Internet kopiert, sondern das *selbst* programmiert, um dabei etwas zu lernen. Dabei sollte man auch daran denken, dass auch Dozenten/Tutoren & Co Suchmaschinen bedienen können, und kopierte Lösungen auch wenn sie ganz toll funktionieren, trotzdem 0 Punkte geben können.

Man sollte bei dieser Aufgabe sehr genau auf den Wortlaut achten und was der zu verschiedenen Randfällen sagt. Beispielsweise was passieren soll falls die beiden Dateien nicht die gleiche Anzahl an Zeilen haben. Und wie viel von der Funktionalität von ``paste`` tatsächlich umgesetzt werden soll. Also beispielsweise was Trennzeichen (Mehrzahl!) angeht oder die Anzahl der Dateien die verarbeiten werden können sollen.

Sinnvoll wäre es auch sich Testfälle zu überlegen und die laufen zu lassen. Am besten so, dass das automatisch/programmatisch geht.

Ein Grundlagentutorial zu Python findet man beispielsweise in der Python-Dokumentation.

Dateien sollte man wenn möglich zusammen mit der ``with``-Anweisung öffnen, damit sichergestellt ist, dass sie auch wieder geschlossen werden.

Namen werden in Python klein_mit_unterstrichen geschrieben. Ausnahmen sind Konstanten (KOMPLETT_GROSS) und Klassen (PascalCase).

Und wenn ich mir die Namen im Beispielcode anschaue: Die sollten aussagekräftig sein. Also keine kryptischen Abkürzungen enthalten, oder gar nur aus solchen bestehen. Was ist `rS`? Wofür steht `d1` und `d2`? Das weiss kein fremder Leser und auch Du selbst nicht mehr wenn Du den Code in ein paar Monaten wieder anschaust. Auch sollten sie nicht zu generisch sein oder Grunddatentypen enthalten. Den Leser interessiert nicht wirklich ob etwas eine Liste ist, das sieht der auch am Code, sondern was die Werte in dieser Liste bedeuten.

`strip()` macht da übrigens mehr als Du haben willst.

Als ”Bonus” könntest Du Dir noch Gedanken darüber machen wie Du mit Textkodierungen umgehst, denn eigentlich sollte man bei Textdateien immer explizit eine Kodierung beim öffnen angeben. ``paste`` kann aber auch Dateien mit verschiedenen Kodierungen zusammenfügen und produziert dann problematische Dateien. Da kann man sich überlegen wie man damit umgehen will. Also beispielsweise eine Kodierung angeben lassen und abbrechen wenn sich die Daten nicht mit der Kodierung lesen lassen, oder die Dateien als Binärdateien verarbeiten, oder mal schauen wie man Daten die sich nicht dekodieren lassen trotzdem als Text durch das Programm schleusen kann.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
gregor3008
User
Beiträge: 2
Registriert: Sonntag 5. Juni 2022, 18:43

Sirius3 hat geschrieben: Sonntag 5. Juni 2022, 19:22 Erster Schritt wäre, ein Grundlagentutorial durchzuarbeiten. Wenn man noch keine Erfahrung mit einer Programmiersprache hat, dann helfen einem "Antworten" aus dem Internet nicht wirklich weiter.
Dein Code macht außer zwei Dateien zu öffnen und zwei Funktionen zu definieren, nichts, es ist also auch nicht verwunderlich, dass auf der Console nichts angezeigt wird.

Jetzt wäre es noch schön zu wissen, warum Du für diese Aufgabe ausgerechnet Python ausgesucht hast. Ich vermute ja mal, dass es sich um Hausaufgaben handelt.
Antwort zu deine letzte frage wäre:
Autodidakt :geek: keine HA dafür bin ich viiiel zu alt :mrgreen:
Antworten