Решить в Python 8. Напишите программу, которая вводит целое число, не превышающее 100, и выводит его прописью, например, 21-«двадцать один».
Ответы
Программа:
Python:
def number_in_words(number):
if number == 100:
return "сто"
else:
numbers_simple = {1: "один", 2: "два", 3: "три", 4: "четыре", 5: "пять",
6: "шесть", 7: "семь", 8: "восемь", 9: "девять"}
teens = {11: "одиннадцать", 12: "двенадцать", 13: "тринадцать", 14: "четырнадцать", 15: "пятнадцать",
16: "шестнадцать", 17: "семнадцать", 18: "восемнадцать", 19: "девятнадцать"}
dozens = {10: "десять", 20: "двадцать", 30: "тридцать", 40: "сорок", 50: "пятьдесят",
60: "шестьдесят", 70: "семьдесят", 80: "восемьдесят", 90: "девяносто"}
digit1 = number % 10
digit2 = number // 100
if number < 10:
return numbers_simple.get(number)
elif number in dozens and number >= 10:
return dozens.get(number)
elif 10 < number < 20:
return teens.get(number)
else:
return dozens.get(digit2) + " " + numbers_simple.get(digit1)
print(number_in_words(int(input())))
Объяснение:
Объявляем функцию number_in_words, которая и обозначает перевод числа в его прописной вид. Далее делаем проверку, передано ли нам число "100", если это так - выводим текст "сто". Также делаем для нуля. Иначе выполняем следующий код...
Регистрируем 3 словаря: 1 - для цифр (numbers_simple), от 1 до 9; 2 - для чисел от 11 до 19; 3 - для десятков. Далее - получаем первую цифру и последнюю цифру числа в переменные digi2 и digi1 соответственно.
Далее, если число меньше 10 - то возвращаем его словесный вид из словаря numbers_simple с помощью get(). Если число находится в десятках (и оно больше либо равно 10), возвращаем это число из словаря teens. Если число находится в интервале от 10 до 20, то возвращаем это число в словесном виде из словаря teens. И для остальных оставшихся чисел мы возвращаем словесный вид его первой цифры через пробел со словесном видом второй цифры. В конце - вызываем этот метод, передав ему введённое целое число с клавиатуры.