Вы должны иметь ваше широкое условие перед узким условием.
В вашем коде у вас есть 3 if
условия, num < 20
, num < 100
, num < 0
, которые на самом деле is 0 <= num < 20
, 20 <= num < 100
, num < 0
.Условие last самое широкое, но вы неправильно перемещаете его внизу.
Сортируйте поезд условий в порядке num < 0
, num < 20
, num < 100
может решить эту проблему.
Обновление: Вы не можете использовать word[num]
в своем блоке num < 0
.Я не могу понять, что "сто" в вашем ожидаемом результате.Это жестко закодированный текст?Затем жестко закодируйте его, например:
def word(num):
d1= {0:'Zero',1:'One',2:'Two',3:'Three',4:'Four',5:'Five',6:'Six',7:'Seven',8:'Eight',9:'Nine',10:'Ten',11:'Eleven',12:'Twelve',13:'Thirteen',14:'Fourteen',15:'Fifteen',16:'Sixteen',17:'Seventeen',18:'Eighteen',19:'Ninteen',20:'Twenty',30:'Thirty',40:'Fourty',50:'Fifty',60:'Sixty',70:'Seventy',80:'Eighty',90:'Ninty'}
if num < 0:
return "This number is less than 0 and it's spelling is one hundred"
if num < 20:
return d1[num]
if num < 100:
if num % 10 == 0:
return d1[num]
else:
return d1[num // 10 * 10] + ' ' + d1[num % 10]
print(word(-100))
print(word(13))