Na poprzedniej lekcji poznałeś czym są systemy liczbowe oraz jak dokonać konwersji z systemu dziesiętnego na inny system o podstawie od 2 do 10 i na odwrót. Teraz pora poznać algorytmy, który pozwalają dokonywać konwersji.
Program konwertujący liczbę z systemu dziesiętnego do systemu o podstawie od 2 do 10
podstawa=int(input())
liczba=int(input())
T=[]
wynik=0
while(liczba>0):
T.append(liczba%podstawa)
liczba//=podstawa
T.reverse()
for i in range(len(T)):
wynik*=10
wynik+=T[i]
print(wynik)
2
123
1111011
8
123
173
10
123
123
Z pomocą dodatkowej zmiennej “wynik”, a także pustej listy “T” tworzymy pętle, która umieszcza na liście T reszty z dzielenia przez podstawę. Obracamy listę i kolejną pętlą powtarzaną przez długość listy T składamy nasz wynik w całość.
Program konwerujący liczbę z systemu o podstawie od 2 do 10 do systemu dziesiętnego
podstawa=int(input())
liczba=input()
wynik=int(liczba[0])
for i in range(1, len(liczba)):
wynik*=podstawa
wynik+=int(liczba[i])
print(wynik)
2
1111011
123
8
173
123
10
123
123
Wczytujemy podstawę pierwotnego systemu liczby oraz liczbę, która zapisana jest jako typ string, abyśmy mogli łatwo dostać się do i-tej cyfry. Przy takim zapisie liczby musimy pamiętać, że musimy zmienić jej typ na int aby móc potem dodać ją do zmiennej wynik. Zauważ, że i-ta cyfra, liczona od lewej, zostanie pomnożona przez podstawę do potęgi len(liczby)-i, czyli takiej jakiej trzeba, aby móc przekonwertować liczbę do systemu dziesiętnego.