WPROWADZENIE
Aby zamienić ułamek zwykły na dziesiętny, można na przykład:
- rozszerzyć mianownik do 10, 100, 1000, itd.:
$\frac{1}{4}=\frac{25}{100}=0,25$
$\frac{7}{8}=\frac{875}{1000}=0,875$
$\frac{3}{5}=\frac{6}{10}=0,6$
- podzielić licznik przez mianownik

Są jednak ułamki zwykłe, których:
- dzielenie licznika przez mianownik nie ma końca
- nie da się rozszerzyć mianownika do 10, 100, 1000 …,
PRZYKŁAD
Ułamek $\frac{2}{11}$ po podzieleniu licznika przez mianownik ma postać: 0,1818181818…
O takich ułamkach mówimy, że:
- mają rozwinięcie dziesiętne nieskończone,
- oraz okresem tego rozwinięcia jest powtarzająca się sekwencja cyfr – w przykładzie powyżej okresem jest (18)
KOD W JĘZYKU PYTHON
def zamien(ulamek_zwykly):
licznik, mianownik = ulamek_zwykly.split("/")
licznik = int(licznik)
mianownik = int(mianownik)
ulamek = licznik / mianownik
reszta = licznik % mianownik
reszty_pokaz = {}
rozwiniecie = []
while reszta not in reszty_pokaz:
reszty_pokaz[reszta] = len(rozwiniecie)
rozwiniecie.append(str(int(10 * reszta / mianownik)))
reszta = 10 * reszta % mianownik
powtarza_dlugosc = len(rozwiniecie) - reszty_pokaz[reszta]
if reszta == 0:
return str(ulamek)
else:
powtarza_sie = "".join(rozwiniecie[reszty_pokaz[reszta]:])
return f"{ulamek} ---> okres: {''.join(rozwiniecie[:reszty_pokaz[reszta]])}({powtarza_sie}) liczba cyfr w okresie: {powtarza_dlugosc} "
ulamek_zwykly = str(input("Wpisz ułamek zwykły licznik/mianownik, na przykład 2/3: "))
ulamek = zamien(ulamek_zwykly)
print(ulamek)
⬆️⬆️⬆️ Zobacz w Google Colaboratory
JAK DZIAŁA PROGRAM?
- Program definiuje funkcję „zamien„, która przyjmuje argument „ulamek_zwykly” w postaci stringa, np. „2/3”.
- Funkcja „zamien” przetwarza string „ulamek_zwykly” na dwie zmienne „licznik” i „mianownik” typu int, używając metody „split()” do rozdzielenia licznika i mianownika, a następnie konwertując je na typ int za pomocą funkcji „int()”.
- Następnie oblicza wartość ułamka „ulamek” poprzez podzielenie „licznika” przez „mianownik”. Dalej, oblicza resztę z dzielenia „licznika” przez „mianownik” za pomocą operatora modulo „%” i przypisuje ją do zmiennej „reszta”.
- Funkcja inicjuje pusty słownik „reszty_pokaz” i pustą listę „rozwiniecie„.
- W pętli while … dopóki „reszta” nie znajduje się w „reszty_pokaz”, program dodaje resztę do słownika „reszty_pokaz” jako klucz, a długość listy „rozwiniecie” jako wartość.
- Następnie dodaje cyfrę przed przecinkiem wynikającej z dzielenia 10 razy „reszta” przez „mianownik” do listy „rozwiniecie” i oblicza nową wartość „reszta”.
- Jeśli „reszta” znajduje się już w „reszty_pokaz”, program oblicza długość okresu, liczbę cyfr w okresie oraz ciąg cyfr okresu, a następnie zwraca ułamek wraz z informacją o okresie, liczbie cyfr w okresie i samym okresie.
- Jeśli „reszta” wynosi 0, program zwraca tylko wartość ułamka.
- Program prosi użytkownika o wprowadzenie ułamka zwykłego i przypisuje go do zmiennej „ulamek_zwykly”.
- Program wywołuje funkcję „zamien” z argumentem „ulamek_zwykly” i przypisuje wynik do zmiennej „ulamek”.
- Program wyświetla wynik, czyli ułamek wraz z informacją o okresie (jeśli istnieje) i liczbie cyfr w okresie.
Dodaj komentarz