Fehlermeldung

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
MMAGAMER
User
Beiträge: 6
Registriert: Dienstag 17. März 2020, 18:55

Hey, wie kann man folgende Fehlermeldung beheben?

Code: Alles auswählen

import turtle as tu

lines = 100

with open("pi.txt","r") as f:
    pi = f.read()

for n in range(lines):
    zahl = int(pi[n])
    rotation = zahl * 36
    tu.setheading(rotation)
    tu.forward(50)
    
tu.done()

Code: Alles auswählen

ValueError: invalid literal for int() with base 10: 'ÿ'
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Keine Zeichen in der Datei haben, die nicht zu einer Zahl konvertierbar sind.
MMAGAMER
User
Beiträge: 6
Registriert: Dienstag 17. März 2020, 18:55

__deets__ hat geschrieben: Montag 27. Juli 2020, 12:45 Keine Zeichen in der Datei haben, die nicht zu einer Zahl konvertierbar sind.
In der Datei sind nur Zahlen.
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

Du hast das falsche Encoding angegeben. Über einen Index zu iterieren, macht man in Python nicht.

Code: Alles auswählen

with open("pi.txt", encoding="utf-8-sig") as f:
    pi = f.read(lines)
for digit in pi:
    zahl = int(digit)
    ...
MMAGAMER
User
Beiträge: 6
Registriert: Dienstag 17. März 2020, 18:55

Sirius3 hat geschrieben: Montag 27. Juli 2020, 13:02 Du hast das falsche Encoding angegeben. Über einen Index zu iterieren, macht man in Python nicht.

Code: Alles auswählen

with open("pi.txt", encoding="utf-8-sig") as f:
    pi = f.read(lines)
for digit in pi:
    zahl = int(digit)
    ...
Was ist mit

Code: Alles auswählen

encoding="utf-8-sig"
gemeint?
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

Das ist das Encoding, in der Du Deine Zahlen in der Datei pi.txt gespeichert hast.
MMAGAMER
User
Beiträge: 6
Registriert: Dienstag 17. März 2020, 18:55

Sirius3 hat geschrieben: Montag 27. Juli 2020, 14:24 Das ist das Encoding, in der Du Deine Zahlen in der Datei pi.txt gespeichert hast.
Ok danke dir :D
Benutzeravatar
pintman
User
Beiträge: 39
Registriert: Freitag 2. Dezember 2005, 20:43
Kontaktdaten:

UTF-8 ist mir bekannt, aber welche Bedeutung hat "-sig" und in welchen Fällen wird es "UTF-8" vorgezogen? :)
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

utf-8-sig hat gar keine Bedeutung, es ist nur so, dass Microsoft sich wieder etwas ausgedacht hat, was darauf schließen läßt, dass jemand den Sinn nicht verstanden hat und deshalb in ihrem Editor UTF8 grundsätzlich ein Zeichen am Anfang anhängt.
In Unicode gibt es zwei Codepoints, \uFEFF und \uFFFE, ersteres ist der Byte-Order-Mark und zweiteres ein ungültiges Zeichen. Bei 16 oder 32bit-Codierungen von Unicode ist es wichtig herauszufinden ob es sich um little-endian oder big-endian handelt, was man anhand der Byte-Order-Mark ganz gut kann. Bei UTF8-Codierung macht das Zeichen aber keinen Sinn, weil es keine Ordnung bei einem Byte gibt.
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Der Sinn lag wohl darin, Editoren einen Hinweis zu geben, dass ein UTF8-enkodierter Text eben das ist. Statt auf heuristiken zu setzen.
Benutzeravatar
pintman
User
Beiträge: 39
Registriert: Freitag 2. Dezember 2005, 20:43
Kontaktdaten:

Danke für die "Klarstellung" und Einordnung. :)
Antworten