Почему for i in range не работает на отрицательных значениях?

Функция возвращает None, хотя я ожидаю от неё 50. В чём я ошибся?

coefficient = 2.5

def purchase(percent):
    if percent <= -10:
        for i in range(-10, -40):
            if i == percent:
                return percent * coefficient


print(purchase(-20))

Ответы (2 шт):

Автор решения: Vit Saha
coefficient = 2.5
## по хорошим правилам функция должна ВСЕГДА что то возвращать если возврат ожидаемый
def purchase(percent):  
    if percent <= -10:
        for i in range(-10, -40):
            if i == percent:
                return percent * coefficient
################
    else:
       return 100

print(purchase(-20))

далее

for i in range(-10, -40):
   print(i)

#ничего

#однако

for i in range(-40, -10):
   print(i)

>>
-40
-39
-38
-37
-36
-35
-34
-33
-32
-31
-30
-29
-28
-27
-26
-25
-24
-23
-22
-21
-20
-19
-18
-17
-16
-15
-14
-13
-12
-11
→ Ссылка
Автор решения: Алексей Белкин

range(start,stop,step) start - начало stop - конец, не включая значение step - шаг с каким шагом вы достигнете от начала до конца. Конструкция типа:

for i in range(1,-10,1):
    print(i)

Ничего не вернет. Так как от 1 до -10 дойти с шагом 1 невозможно. Конструкция типа:

for i in range(1,-10, -1):
    print(i)

Вернет:

0
-1
-2
-3
-4
-5
-6
-7
-8
-9
→ Ссылка