Długość inta / ostatnie 2 cyfry ?

Odpowiedz Nowy wątek
2011-08-22 17:35
qwe
0

mam jakąś zmienną do niej przypisaną liczbę całkowitą np:
liczba = 123456789
niestety "int" nie jest iteracyjny [dobrze napisałem?] zatem nie mogę wziąć np. liczba[0] aby pokazało 1, liczba[1] aby pokazało 2 itp.
Interesują mnie w tym przypadku dwie ostatnie liczby, a mianowicie 8 i 9 aby odczytać z łańcucha liczb.

Próbowałem przez dzielenie przez 10 i resztę z dzielenia przez 10, i co prawda "przedostatnia" (liczba dziesiątek) się zgadza, natomiast liczba "jedności" (ostatnia) już nie.

Jakiś pomysł jak je odczytać ?

niestety "int" nie jest iteracyjny [dobrze napisałem?] - nie jest tablicą - krwq 2011-08-22 17:43

Pozostało 580 znaków

2011-08-22 17:38
0

to spróbuj modulo 100


░█░█░█░█░█░█░█░█░█░█░█░

Pozostało 580 znaków

2011-08-22 17:39
0
 int(str(1234567890)[i])
1234567890/(pow(10,i))%10 <-- string nie jest potrzebny, w szczególności że to jego można rozwiązać po prostu tak: 12345678%100 - krwq 2011-08-22 17:43

Pozostało 580 znaków

2011-08-22 17:53
qwe
0

ok dzieki, zapomnialem ze moge str(liczba) ;<

Modulo jest zdecydowanie lepsze w przypadku ostatnich cyfr liczby. - Zjarek 2011-08-22 17:56

Pozostało 580 znaków

2011-08-22 17:57
0

@krwq: zależy co kto lubi, mi się to wydaje mniej czytelne jak na możliwości pythona

wersja z dwoma ostatnimi cyframi:

int(str(123456789)[-2:])
edytowany 1x, ostatnio: notexists, 2011-08-22 17:57
czytelność w tym przypadku to kwestia sporna, dla mnie modulo jest wystarczająco czytelne, ale twoja wersja jest mniej wydajna - Rev 2011-08-22 17:58

Pozostało 580 znaków

2011-08-22 17:58
qwe
0

jeszcze jedno pytanko.
Dlaczego w silni, gdy wpisze za "n" > 1000 wyskakuje mi błąd, a gdy "n" < 1000 jest wszystko ok ?

def silnia(n):
    if n <=1:
        return 1
    return n * silnia(n-1)
 

Pozostało 580 znaków

2011-08-22 17:59
Rev
0

Domyślasz się w ogóle jaka duża jest taka liczba?

Zgaduję, że rozwiązujesz zadanie ze spoja. Spójrz na komentarze. Oblicz silnię z pierwszych 20 liczb i spójrz na to jakie mają dwie ostatnie cyfry i stąd wyciągnij wnioski.


Pozostało 580 znaków

2011-08-22 18:01
0

RuntimeError: maximum recursion depth exceeded
za dużo rekurencji, zrób to iteracyjnie

Pozostało 580 znaków

2011-08-22 18:04
ofidyfil
0

Bo stosujesz rekurencję, domyślna głębokość stosu wywołań to 1000.

import sys
 
print('poczatkowa glebokosc rekurencji: %d' % sys.getrecursionlimit())
sys.setrecursionlimit(690666);
print('aktualna glebokosc rekurencji: %d' % sys.getrecursionlimit())

Pozostało 580 znaków

2011-08-22 18:10
qwe
0

tak, juz wiem ock; d zrobiłem to zadanie w pythonie na spoju, zaakceptowała :) dziekie wielkie !

mam nadzieje że skorzystałeś z uwagi Rev, a nie notexists - krwq 2011-08-22 19:02

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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