Seite 1 von 1
Parsen führender Nullen
Verfasst: Dienstag 27. Juli 2010, 13:30
von Wolfgang.Belau
wird mit Version 2.6.4 ohne Probleme geparst und als type int erkannt. Dies gilt auch für Zahlesymbole 0 bis 7.
wird als "invalid token" identifiziert! Die Integerzahl muss hier ohne führende Nullen oder mit int("08") definiert werden. Kleine Überraschungen!
Re: Parsen führender Nullen
Verfasst: Dienstag 27. Juli 2010, 13:38
von DasIch
Code: Alles auswählen
>>> 01
1
>>> 02
2
>>> 03
3
>>> 04
4
>>> 05
5
>>> 06
6
>>> 07
7
>>> 010
8
Keine Überraschung, dass sind oktale Zahlen, also Zahlen mit der Basis 8.
Re: Parsen führender Nullen
Verfasst: Dienstag 27. Juli 2010, 14:01
von cofi
In Python 3 ist man zu
übergegangen, kann leider nicht testen ob die führende `0' immernoch funktioniert, ich glaube aber nicht. Die neue Notation hat natuerlich auch was schreckliches
Edit: Die neue Notation gibt es schon seit 2.6
Re: Parsen führender Nullen
Verfasst: Dienstag 27. Juli 2010, 14:07
von BlackJack
Die Frage ist halt wie oft man Oktalzahlenliterale braucht und wie oft jemand darauf reinfällt, dass 08 ein Syntaxfehler ist. Das passiert ja nicht nur Anfängern. Mir ist das auch schonmal auf die Füsse gefallen.
Re: Parsen führender Nullen
Verfasst: Dienstag 27. Juli 2010, 14:20
von DasIch
Also ich bin noch nicht auf die Idee gekommen Zahlen mit führenden Nullen im Code zu nutzen, wüsste auch gar nicht wieso man dass machen sollte.
Re: Parsen führender Nullen
Verfasst: Dienstag 27. Juli 2010, 15:16
von BlackJack
@DasIch: Mir passiert so etwas regelmässig bei Datumsangaben. Für heute würde ich ``datetime.date(2010, 07, 27)`` ganz automatisch so tippen, weil ich das mit den zweistelligen Zahlen so gewohnt bin. Am Anfang des Monats und ab nächstem Monat wäre das ein Problem.

Re: Parsen führender Nullen
Verfasst: Dienstag 27. Juli 2010, 17:30
von gkuhl
Ab Python 3.x ist die vorangestellte "0" nicht mehr erlaubt:
Code: Alles auswählen
>>> from datetime import date
>>> date(2010,07,28)
File "<stdin>", line 1
date(2010,07,28)
^
SyntaxError: invalid token
Den Änderung finde ich hier sinnvoll und insbesondere anfängerfreundlich.
Grüße
Gerrit
Re: Parsen führender Nullen
Verfasst: Dienstag 27. Juli 2010, 17:56
von DasIch
gkuhl hat geschrieben:Den Änderung finde ich hier sinnvoll und insbesondere anfängerfreundlich.
Ehrlich gesagt finde ich dass ziemlich lächerlich. Oktale Zahlen haben eine neue Syntax bekommen und es gibt absolut keinen technischen Grund der diese Änderung rechtfertigt.
Re: Parsen führender Nullen
Verfasst: Dienstag 27. Juli 2010, 18:29
von lunar
@DasIch: Sie vermeidet Fehler und Mehrdeutigkeiten, und sorgt so dafür, dass man den Quelltext besser lesen kann. Es geht da um die Programmierer! „Technische Gründe“ kannst Du in den Wind schießen, „technisch“ gesehen kann man auch einfach nur hexadezimale Literale erlauben, oder Zahlen zur Basis 26 über die Buchstaben des Alphabets darstellen.
Re: Parsen führender Nullen
Verfasst: Dienstag 27. Juli 2010, 18:40
von BlackJack
Ausserdem sind die verschiedenen Basen nun einheitlicher, denn neben '0o' gibt es ja auch '0x' und '0b' als Präfixe für hexadezimale und binäre Literale.
Re: Parsen führender Nullen
Verfasst: Dienstag 27. Juli 2010, 22:45
von Leonidas
Aber 07 als Syntaxfehler find ich jetzt aber auch eher seltsam und da werden sicher Leute kommen und sich wundern warum sie plötzlich Syntaxfehler haben in ihrem Code.
Re: Parsen führender Nullen
Verfasst: Dienstag 27. Juli 2010, 23:00
von BlackJack
@Leonidas: Ich nehme mal an, dass ist für die gedacht, die Oktalzahlen haben möchten, damit die zur Laufzeit nicht davon überrascht werden, dass 010 nun plötzlich nicht mehr 8 ist.

Re: Parsen führender Nullen
Verfasst: Dienstag 27. Juli 2010, 23:11
von Leonidas
BlackJack hat geschrieben:@Leonidas: Ich nehme mal an, dass ist für die gedacht, die Oktalzahlen haben möchten, damit die zur Laufzeit nicht davon überrascht werden, dass 010 nun plötzlich nicht mehr 8 ist.

Ja, aber ich denke außerhalb von C-Hackern ist das nur ne Minderheit. Wesentlich mehr Leute würden bei 07 halt 7 erwarten, wie du ja auch bestätigt hast. Dafür haben wir ja die Präfixe, dass die "normalen" 10er-Basiszahlen weniger Überraschungen bieten. POLS und so.
Re: Parsen führender Nullen
Verfasst: Donnerstag 29. Juli 2010, 16:19
von Mad-Marty
Ich finde es ebenfalls gut das das nicht mehr erlaubt ist mit führender 0.
Mal abgesehen davon habe ich ziemlich viele kleine Rechenfunktionieren von C portiert und der Oktalzahlenanteil im Source ist extrem gering.