Hallo,
Ich habe erst vor sehr kurzer Zeit mit Python angefangen.
Nun habe ich eine Fehlermeldung bei diesem Code:
import turtle as tu
lines = 1000
with open("1_m_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()
ValueError: invalid literal for int() with base 10: '.'
Kann mir jemand weiterhelfen?
ValueError: invalid literal for int() with base 10: '.'
-
- User
- Beiträge: 379
- Registriert: Mittwoch 27. Juni 2018, 17:39
Bitte verwende Code-Tags!
Ich glaube allerdings, dass das deklarieren mit int() nicht nötig ist.
Code: Alles auswählen
import turtle as tu
lines = 1000
with open("1_m_pi.txt","r") as f:
pi = f.read()
for n in range(lines):
zahl = pi[n]
rotation = zahl * 36
tu.setheading(rotation)
tu.forward(50)
tu.done()
Doch, das ist nötig. Es ist auch keine Deklaration. Sondern eine Wandlung von einem String zu einer zahl. Nur das die Zahlen die in der Textdatei stehen keine reinen integer sind. Entweder ist also die Datei anzupassen. Oder das parsen toleranter. Wie sieht der Inhalt der Datei aus?
@milan.m: `read` liest die Datei als ein String, und der Indexzugriff bei `zahl = int(pi[n])` liefert dann einzelne Zeichen. Daneben ist es auch unschön, mit einem Index auf eine Liste zuzugreifen, anstatt direkt über den Inhalt mit for zu iterieren, am besten direkt über das Dateiobjekt.
Dass Du einen Punkt in der Datei hast, läßt vermuten, dass Du auch in Wirklichkeit `float`s statt `int`s in der Datei stehen hast.
Dass Du einen Punkt in der Datei hast, läßt vermuten, dass Du auch in Wirklichkeit `float`s statt `int`s in der Datei stehen hast.
Code: Alles auswählen
import turtle as tu
with open("1_m_pi.txt") as lines:
for line in lines:
zahl = float(line)
rotation = zahl * 36
tu.setheading(rotation)
tu.forward(50)
tu.done()
- __blackjack__
- User
- Beiträge: 13103
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
Ich denke das mit dem `read()` war schon richtig und es soll wirklich jedes Zeichen, also jede Ziffer betrachtet werden. So eine Datei habe ich nämlich auch, und da sind die erste Million Stellen von π drin. Und dabei wird dann über den Dezimalpunkt nach der 3 gestolpert. Da muss man halt überlegen was man mit dem machen will. Wahrscheinlich darauf testen und ihn überspringen.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman