Python len()?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

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.


Stefmu06 
Fragesteller
 10.09.2020, 18:21

Achso

0
ralphdieter  10.09.2020, 22:19
@Stefmu06

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 "====...".

1

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

KarlRanseierIII  10.09.2020, 21:01

Genau so sollte es gemacht werden..

0
ralphdieter  10.09.2020, 22:21

Um nur die Zehnerpotenzen (ohne ihre Vielfachen) zu erwischen, schreibt man:

  if number == power:
0
regex9  10.09.2020, 23:32
@ralphdieter

Stimmt, die Division kann man sich auch ersparen. Das Ergebnis ist das Gleiche.

0