функция записи, ввода и печати их с условием - PullRequest
0 голосов
/ 06 февраля 2019

Я хочу написать функцию, которая будет принимать параметр и печатать с условием (вывод будет зависеть от ввода).Моя программа выдает ошибку ключа.Я ищу вывод, например:

Это число меньше 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<20):
      return d1[num]
   if (num<100):
      if num % 10 == 0:
         return d1[num]  
      else:
         return d1[num // 10 * 10] + ' ' + d1[num % 10]
   if (num < 0):
      return "This number is less than 0 and it's spelling is" + word(num)

print (word(- 100))
print (word(13))

1 Ответ

0 голосов
/ 06 февраля 2019

Вы должны иметь ваше широкое условие перед узким условием.

В вашем коде у вас есть 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)) 
...