Python len()?
Wollte ein ganzes einfaches Programm machen wo die Variable erhöht wird in einer While-Schleife. Ich wollte nun auch das (a) jedesmal geprintet wird wenn es zb 10, 100, 1000, 10000... gross ist. Allerdings wird nun immer nur 10 geprintet.
Warum?
2 Antworten
Das liegt daran, dass b[1:len(b)] nur dann gleich "0" ist, wenn b gleich "10" ist.
Wenn b == "100" ist, dann ist b[1:len(b)] gleich "00" und nicht gleich "0", somit ist die Bedingung nicht erfüllt.
Du könntest stattdessen auf b=="1"+"0"*(len(b)-1) prüfen. ("xyz"*3 ergibt in Python "xyzxyzxyz"). Aber das wäre hier „von hinten durch die Brust ins Auge“.
Nur wenn Du z.B. eine lange Linie ausgeben willst, ist "="*80 viel praktischer als "====...".
Dein Problem lässt sich auch leicht mathematisch lösen:
number = 1
power = 10
while number < 100_000:
if number % power == 0:
print(number)
power *= 10
number += 1
Der Modulo-Operator (%) führt eine ganzzahlige Division mit Rest aus. Wenn der Rest 0 beträgt, kannst du davon ausgehen, auf eine Zahl gestoßen zu sein, die mit einer 0 endet.
Beispielrechnungen:
10 % 10 = 1 Rest 0
12 % 10 = 1 Rest 2
Um nur die Zehnerpotenzen (ohne ihre Vielfachen) zu erwischen, schreibt man:
if number == power:
Stimmt, die Division kann man sich auch ersparen. Das Ergebnis ist das Gleiche.
Achso