2016-04-28 10 views
0

Ich schreibe ein Programm, das die Buchstaben in einer TXT-Datei liest und dann die Wörter in einem anderen und fügt sie wieder zusammen. In der pos.txt hast du: 1231 und in der neuen file.txt hast du die Katze besagter Katze. Ich erhalte den Fehler über ungültiges Literal für int. Warum bin ich nicht sicher, wenn ich die Zeichenfolge vor dem Ausdruck auf dem Bildschirm in int konvertiert habe?ValueError: ungültiges Literal für int() mit Basis 10:

for position in WordPositionsList: 
    OriginalSentence = OriginalSentence + " " + SentenceWordsList[int(position) - 1] 
    # need to subtract 1 because WordPositions list starts at zero and original positions were stored starting at one 
+1

Willkommen auf SO! Könnten Sie bitte nur den relevanten Code und eventuell eine Rückverfolgung posten? – vmonteco

+0

Offensichtlich enthält mindestens eine Ihrer Dateien oder Variablen nicht das, was Sie erwarten. Führen Sie ein Debugging durch, um herauszufinden, wo sich Ihr Programm und Ihre Erwartungen unterscheiden. Du benutzt "int" nur einmal in diesem Code, also wenn ich du wäre, würde ich dort anfangen: Enthält "position" was du denkst es zu tun? –

+0

Versuchen Sie, Position zu drucken, bevor Sie sie in ein int konvertieren. – ArtOfWarfare

Antwort

0

von WordPositionsList = WordPositions.split(" ") verwenden, können Sie davon aus, dass die pos.txt Dateibereiche zwischen jeder Position Charakter hat.

können Sie Ihr Problem beheben, indem Sie entweder sicherstellen, dass Ihre Charaktere Räume haben, oder eine Liste jedes Zeichen in der Zeile machen ohne Leerzeichen unter der Annahme, dh

WordPositionsList = [char for char in WordPositions] 
0

Wenn WordPositionsList ist ein list von Wörtern dann position Variable in Ihrer for Schleife wird das aktuelle Wort in der Iteration und nicht ein int speichern.

Verwandte Themen