Python 0000 bis 9999 generieren?


06.05.2022, 13:26

EDIT:

War gestern ein bisschen ENORM Übermüdet, Sorry ... Hier ist meine eigene Lösung:

https://pastebin.com/5HxXtzBu

5 Antworten

  • Schleife von 0 bis < 10.000 erstellen
  • Zählvariable in String umwandeln
  • Stringlänge abfragen und fehlende Stellen vorne mit Nullen auffüllen

Wenn du damit dann weiterrechnen willst/musst, dann wieder in eine Zahl umwandeln.

Zum Beispiel so:

for i in range(10000):
    temp = "" + str(i)
    while len(temp)<4:
        temp = "0" + temp
    print(temp)

Allerdings bin ich nicht wirklich in Python bewandert.


[f"{n:04}" for n in range(10000)]

BlueX15  06.05.2022, 22:51

Was ist dieses n:04 in deinem f-string? Habe das noch nie gesehen also was passiert da genau?

0
daCypher  16.05.2022, 07:57
@BlueX15

Sorry für die späte Antwort, ich war letzte Woche krank.

Das "n" ist das, was du wahrscheinlich schon selbst gesehen hast. Das ist einfach die Variable n vom "for n in range(10000)". Der Doppelpunkt bedeutet, dass danach eine Formatierungsoption kommt und die 04 ist die Formatierungsoption. Bedeutet: Mindestens 4 Stellen lang und mit Nullen aufgefüllt. Wenn du die 0 weglassen würdest, würde die Zahl mit Leerzeichen aufgefüllt werden.

Details zu den Formatierungsoptionen findest du hier: https://docs.python.org/3/library/string.html#formatspec

Man könnte den Code z.B auch so schreiben:

["{:04}".format(n) for n in range(10000)]

oder in der älteren Variante:

["%04d" % n for n in range(10000)]
1
BlueX15  16.05.2022, 15:24
@daCypher

Also ist die Format Angabe der String "{:04}" der dafür sorgt das vorne mit nullen aufgefüllt wird?

0
daCypher  16.05.2022, 15:54
@BlueX15

Die "0" ist dafür da, dass es mit Nullen aufgefüllt wird. Du kannst ja mal ein paar Sachen durchprobieren:

n = 25
f"{n:04}" # Ergebnis: '0025'
f"{n:4}" # Ergebnis: '  25'
f"{n:0}" # Ergebnis: '25'
f"n:04" # Ergebnis: 'n:04'
f"{n:04b}" # Ergebnis: '11001' (binär)
f"{n:04x}" # Ergebnis: '0019' (hex)
1
BlueX15  16.05.2022, 15:57
@daCypher

Okay ich glaub ich habs ungefähr, warum nicht einfach zfill?

0
daCypher  16.05.2022, 16:00
@BlueX15

Du kannst auch zfill nehmen, wenn du das lieber hast. Ich nehme halt lieber die f-Strings, aber das ist nur Geschmackssache.

1
BlueX15  19.05.2022, 13:38
@daCypher

Ja hast recht, viele Wege führen zum Ziel ;) Danke für die Erklärung immer toll was neues zu lernen

0
larspostor  29.07.2022, 17:13

andere Frage wie kann ich damit in Minecraft einen Code für ne Truhe heraus finden?

0
for i in range(10000):
    print('{0:04}'.format(i))

...wenn du es nur printen willst.

for i in range(10000):
    print(i)

Generieren 4 Mal n random integer wert zwischen 0 und 10 Wandel dem in n String um und füge ihn an den vorherigen an

Woher ich das weiß:Studium / Ausbildung – info studium