Застрял с простой задачей по функции

Задача

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]
→ Ссылка