python- drukowanie długości liczby

0

witam, mam takie pytanie: jak np. mam wykonać działanie i nie drukować jego wyniku tylko jego długość, np. mam 15*150=2250, więc chcę wydrukować 4. Jak to zrobić?

0

Dugość wyniku?

wynik = 15*150
print(len(str(wynik)))
0

o dziękuję bardzo, a jeśli chciałabym, żeby drukował np. dwie pierwsze liczby i długość tego, co zostało?, np, 123*123=15129, to żeby drukowało 15 , 3

0

Łatwiej byłoby gdybyś po prostu napisala co chcesz osiągnąć. Bo zwykle nijak sie to ma do problemu który ludzie opisują na forum. Zwykle pytają o to jak zrealizować ich dziwny pomysł zamiast spytać jak rozwiązać pierwotny problem. Tak czy siak:

wynik = 123*123
wynik_string = str(wynik)
print(int(wynik_string[:2]), len(wynik_string[2:]))

Wyjaśnienie: ten zapis z [] to tzw "slice", czyli tworzenie kopii fragmentu podanej tablicy. W nawiasach kwadratowych podajesz [od_której_pozycji:do_której_pozycji]. Nie podanie którejś z liczb powoduje automatyczne zalożenie że tniemy od początku / do końca. W efekcie wynik_string[:2] powoduje stworzenie kopii tablicy wynik_string od początku aż do drugiego znaku. Analogicznie wynik_string[2:] wykonuje kopie tablicy wynik_string od pozycji 2 do końca.

0

Dziękuję ślicznie, mam zrobić program, który drukuje dwie początkowe cyfry silni i po przecinku pozostałą długość, mam taki:

n=int(input('podaj n'))   
for i in range(1,n):
        n*=i
        n_string = str(n)
        print(int(n_string[:2]),',', len(n_string[2:]))

jednak to mi drukuje zamiast tylko jednego wyniku, np. dla n=20 powinno być tylko 24,17 a on mi drukuje wszystkie wyniki:

20 , 0
40 , 0
12 , 1
48 , 1
24 , 2
14 , 3
10 , 4
80 , 4
72 , 5
72 , 6
79 , 7
95 , 8
12 , 10
17 , 11
26 , 12
41 , 13
71 , 14
12 , 16
24 , 17
0
  1. No bo najpierw musisz policzyć silnie a dopiero potem wykonać kod który ci podałem (tzn pod pętlą a nie wewnątrz niej).
  2. Ale to nie zadziała zbyt dobrze dla dużych liczb, zdajesz sobie z tego sprawę? Dla dużych liczb musisz jednak użyć mózgu i wyliczać sobie dwie te dwie pierwsze cyfry silni oraz jej długość.
0

wystarczy mi, aby działał do 1000, więc chyba będzie ok, dzięki.

0

Swoją drogą ja bym to zaimplementował tak:

n=int(input('podaj n'))
silnia = reduce(lambda x,y:x*y, xrange(1,n))
silnia_string = str(silnia)
print(int(silnia_string[:2]),',', len(silnia_string[2:]))

@MarekR22 bez przesady, wynik będzie momentalnie ;)
Dopiero dla 100k zwalnia zauważalnie (timeit mówi że dla 10k jest 0.5 sekundy a dla 100k jest już 10 sekund)

1 użytkowników online, w tym zalogowanych: 0, gości: 1