Застрял с простой задачей по функции
Задача
def fractional_part(numerator, denominator):
# Operate with numerator and denominator to
# keep just the fractional part of the quotient
return 0
print(fractional_part(5, 5)) # Should be 0
print(fractional_part(5, 4)) # Should be 0.25
print(fractional_part(5, 3)) # Should be 0.66...
print(fractional_part(5, 2)) # Should be 0.5
print(fractional_part(5, 0)) # Should be 0
print(fractional_part(0, 5)) # Should be 0
Решение задачи
def fractional_part(numerator, denominator):
if denominator != 0:
return int((numerator/denominator) - (numerator//denominator)) # Operate with numerator and denominator to
else:
return 0
print(fractional_part(5, 5)) # Should be 0
print(fractional_part(5, 4)) # Should be 0.25
print(fractional_part(5, 3)) # Should be 0.66...
print(fractional_part(5, 2)) # Should be 0.5
print(fractional_part(5, 0)) # Should be 0
print(fractional_part(0, 5)) # Should be 0
Дает такую ошибку, что проблема в отступах, но чую, что в чем-то другом или не так?
Traceback (most recent call last):
module test_area.py line 4
else:
^
IndentationError: unexpected indent
Ответы (1 шт):
Автор решения: Zhihar
→ Ссылка
ну где-то промахнулись с отступами на строке 4
в приведённом примере все нормально в данной строке, программа работает
сам код конечно неправильный - как вы вообще хотите получить 0.25 преобразовывая данные в int?
return (numerator/denominator) - (numerator//denominator)
чем не устраивает? данный код выполняет ровно требуемую функцию
а можно использовать уже готовые функции для этого:
return math.modf(numerator/denominator)[0]
да и вообще все это можно в 1 строку записать
def fractional_part(numerator, denominator):
return 0.0 if denominator == 0 else math.modf(numerator/denominator)[0]