Если вы используете оператор return
"внутри" оператора if
, он вернется, как только условие speed_difference < abs(closest - speed_limit)
будет true
, которое всегда будет удовлетворяться вашим кодом для первого элемента списка.
Поэтому необходимо удалить отступы перед оператором return
, чтобы он ожидал окончания цикла, прежде чем вернуть результат.
Еще одно замечание: оператор closest = abs(speed_data[0] - speed_limit)
неверен, посколькуВы присваиваете переменную closest
с разницей между элементом списка и speed_limit
, но, увидев свой код функции, вам лучше назначить ее с элементом списка: closest = speed_data[0]
.
def find_nearest_speed(recorded_speeds, speed_limit):
"""Finds the closest recorded speed when compared to the speed limit."""
closest = speed_data[0] # Sets the closest as the list's first element
for current_element in speed_data:
speed_difference = abs(current_element - speed_limit)
if speed_difference < abs(closest - speed_limit):
closest = current_element
return closest
max_speed = 30
speed_data = [24, 25, 27, 28, 31, 35]
closest_speed = (find_nearest_speed(speed_data, max_speed))
print("The closest recorded speed was {} Km/h.".format(closest_speed))