Odpowiedź :
Odpowiedź:
a = float(input("Podaj dzielną "))
b = float(input("Podaj dzielnik "))
c = a//b
d = c*b
if(d == a):
print("Liczba ",a," jest podzielna przez liczbę ",b)
else:
print("Liczba ",a," nie jest podzielna przez liczbę ",b)
Wyjaśnienie:
Polecono napisać program sprawdzający podzielność jednej liczby przez inną. Z definicji "Liczba a jest podzielna przez liczbę b, jeżeli dzieląc liczbę a przez liczbę b otrzymamy wynik całkowity (bez reszty)."
Język Python posiada wbudowany operator modulo (a%b) - której zwracana wartość to właśnie reszta z dzielenia.
Ten operator umożliwia dosyć proste zrealizowanie celu zadania, ale w treści podkreślono, że program musi ominąć konieczność obliczania reszty z dzielenia.
To jest przykład złego założenia programu, który nie spełnia warunku nieobliczania reszty z dzielenia:
Gdyby tak nie było program mógłby ograniczyć się do:
a = float(input("Podaj dzielną "))
b = float(input("Podaj dzielnik "))
if(a%b==0): #w instrukcji sterującej obliczno resztę z dzielenia. źle
print("Liczba ",a," jest podzielna przez liczbę ",b)
else:
print("Liczba ",a," nie jest podzielna przez liczbę ",b)
Warto zauważyć, że treść polecenia wyklucza wyłącznie obliczanie reszty z dzielenia. Autor zadania nie zabrania nam żadnych innych zabiegów, aby osiągnąć wyznaczony cel: sprawdzić podzielność jednej liczby bez inną.
W pierwszej kolejności prosimy o wprowadzenie zmiennych i poddajemy je konwersji z typu string na float:
a = float(input("Podaj dzielną "))
b = float(input("Podaj dzielnik "))
Kolejnym krokiem jest przechowywanie zaokrąglonego wyniku dzielenia. Umożliwia nam to operator "floor division":
c = a//b
Następnie przeprowadzamy próbę pomnożenia wyniku zaokrąglonego z dzielnikiem (nadal nie mamy pojęcia jaka jest reszta z dzielenia).
d = c*b
Pozostaje nam sprawdzić, czy dana liczba (a) zgadza się z uzyskaną przez szereg modyfikacją liczbą (d). Robimy to w instrukcji sterującej i jednocześnie wysyłamy komunikat do użytkownika:
if(d == a):
print("Liczba ",a," jest podzielna przez liczbę ",b)
else:
print("Liczba ",a," nie jest podzielna przez liczbę ",b)
Efekt działania: Sprawdziliśmy podzielność jednej liczby przez drugą zgodnie z warunkami w zadaniu.
Dodatkowo program spełnia regułę KISS.
Odpowiedź
Program wraz z przykładowym uruchomieniem dałam w załączniku.
Wyjaśnienie
Program sprawdza podzielność, a więc nie wykonuje dzielenia...