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ć?

- Rejestracja:około 21 lat
- Ostatnio:prawie 3 lata
- Lokalizacja:Space: the final frontier
- Postów:26433
Dugość wyniku?
wynik = 15*150
print(len(str(wynik)))

- Rejestracja:około 21 lat
- Ostatnio:prawie 3 lata
- Lokalizacja:Space: the final frontier
- Postów:26433
Ł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.
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


- Rejestracja:około 21 lat
- Ostatnio:prawie 3 lata
- Lokalizacja:Space: the final frontier
- Postów:26433
- 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).
- 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ść.
wystarczy mi, aby działał do 1000, więc chyba będzie ok, dzięki.


- Rejestracja:około 21 lat
- Ostatnio:prawie 3 lata
- Lokalizacja:Space: the final frontier
- Postów:26433
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)
