Wie kann man in Python Nummer index machen, also ich will wissen wieviel zahl mehr weniger als 9 zahlen sind?

hallojuhu  27.03.2021, 01:23

Du willst quasi wissen wie viele der einzelnen Ziffern größer bzw. kleiner 9 sind?

Hab ich das richtig verstanden?

jadel440 
Fragesteller
 27.03.2021, 01:34

genau

5 Antworten

Es kann sein dass ich ein paar Syntaxfehler drin habe (habe schon länger nichts mehr mit Python gemacht. Aber ich denke mal der Code müsste wie folgt aussehen:

PS: Ich weiß nicht genau wieso du einen Code für die Zahl 9 brauchst. Schließlich sind alle Ziffern kleiner/gleich 9.

number = +392
higherNums
lowerNums
schwelle = 9

do:
  index = number%10

  if(index >  schwelle):
    higherNums++
  else:
    lowerNums++
  
  number /= 10

while(number / 10 >= 0)

print(lowerNums + " Ziffern sind kleiner als " + schwelle + " ."
print(highterNums + " Ziffern sind größer als " + schwelle + " ."
hallojuhu  27.03.2021, 01:55

Mir fällt gerade auf ich habe den Fall vergessen dass die Zahl gleich der Schwellenzahl ist. In dem Fall wird sie momentan einfach zu den kleineren Zahlen gewertet.

Und das Statement im While habe ich auch vertauscht. Sollte sein

while(number > 0)
0
>>> Anzahlgroß = (lambda Zahl, KleinerGrößer=5 : [int(Zahl2)>KleinerGrößer for Zahl2 in list(str(Zahl))].count(True))
>>> Anzahlgroß(454254)
0
>>> Anzahlgroß(45425487382903847)
6
>>> Anzahlgroß(182347081392349303827549, 2)
17
>>> Anzahlklein = (lambda Zahl, KleinerGrößer=5 : [int(Zahl2)>KleinerGrößer for Zahl2 in list(str(Zahl))].count(False))
>>> Anzahlklein(454254)
6
>>> Anzahlklein(45425487382903847)
11
>>> Anzahlklein(182347081392349303827549, 8)
21
>>>  
Woher ich das weiß:Hobby

Vielleicht hilft dir Modulo weiter, das gibt immer den Rest einer Division zurück. Für genaueres wäre eine genauere Beschreibung deines Problems ganz gut.

number = +436762034500
biggerThan9 = 0
smallerThan9 = 0

if number < 9:
	smallerThan9 += 1
else:
	biggerThan9 += 1
Woher ich das weiß:Hobby – Programmieren ist mein Hobby & Beruf
>>> number=1789098756
>>> len(str(number))
10
>>> len([1 for x in str(number) if int(x)<9])
8

So ginge das schmerzlos...

hallojuhu  27.03.2021, 02:11

Klar ist das eine Option, jedoch ging ich von der Frage des Fragestellers davon aus, dass er gerne verstehen würde wie es funktioniert. Und ich denke einmal deine (sehr schöne Lösung) ist doch nur schwer verständlich für einen Laien.

PS: Echt schön gelöst

0
ralphdieter  27.03.2021, 12:42
@hallojuhu
ist doch nur schwer verständlich für einen Laien.

kann schon sein, aber es ist Python.

Soll man etwa nur globale Variablen und keine Klassen verwenden, weil das für Laien leichter verständlich ist?

0
ralphdieter  27.03.2021, 12:47
len([1 for x in str(number) if int(x)<9])

Mein Verbesserungsvorschlag:

sum(x<'9' for x in str(number))

Der Fall x=='–' wird auch hier nicht beachtet, aber wenigstens knallt's bei mir nicht.

2