Задача: Целое число прописью на русском языке

Опубликован: 01.11.2024 45

Условие: Напишите функцию, которая будет принимать число (от 0 до 999), а возвращать это число прописью (на русском языке).

Например: func(123) # выведет 'сто двадцать три'

Решение:

def num_to_word(num):
    units = ['ноль', 'один', 'два', 'три', 'четыре', 'пять',
             'шесть', 'семь', 'восемь', 'девять']
    teens = ['десять', 'одиннадцать', 'двенадцать', 'тринадцать',
             'четырнадцать', 'пятнадцать', 'шестнадцать',
             'семнадцать', 'восемнадцать', 'девятнадцать']
    tens = ['двадцать', 'тридцать', 'сорок', 'пятьдесят', 'шестьдесят',
            'семьдесят', 'восемьдесят', 'девяносто']
    hundreds = ['сто', 'двести', 'триста', 'четыреста', 'пятьсот',
                'шестьсот', 'семьсот', 'восемьсот', 'девятьсот']
    if 0 <= num <= 9:
        return units[num]
    elif 10 <= num <= 19:
        return teens[num - 10]
    elif 20 <= num <= 99:
        if num % 10 == 0:
            return tens[num // 10 - 2]
        else:
            return f"{tens[num // 10 - 2]} {units[num % 10 ]}"
    elif 100 <= num <= 999:
        if num % 100 == 0:
            return hundreds[num // 100]
        elif 1 <= num % 100 <= 9:
            return f"{hundreds[num // 100 - 1]} {units[num % 100]}"
        elif 10 <= num % 100 <= 19:
            return f"{hundreds[num // 100 - 1]} {teens[num % 100 - 10]}"
        elif 20 <= num % 100 <= 99:
            if num % 10 == 0:
                return f"{hundreds[num // 100 - 1]} {tens[(num % 100)//10 - 2]}"
            else:
                return f"{hundreds[num // 100 - 1]} {tens[(num % 100) // 10 - 2]} {units[num % 10 ]}"
    else:
        return 'число слишком большое'


print(num_to_word(178))
# сто семьдесят восемь

Похожие посты

Задача: Решение квадратного уравнения

Задача: Тренажер таблицы умножения

Задача: Наибольший числовой палиндром

Задача: Разложение числа на простые множители

Комментариев нет.