• 1
    Entrada e saída
    • Tarefas
  • 2
    Condições
    • Tarefas
  • 3
    Loop for
    • Tarefas
  • 4
    Strings
    • Tarefas
  • 5
    Loop while
    • Tarefas
  • 6
    Listas
    • Tarefas
  • 7
    Matrizes 2D
    • Tarefas
  • 8
    Dicionários
    • Tarefas
  • 9
    Conjuntos
    • Tarefas
  • 10
    Funções e recursão
    • Tarefas
  • к

Lição 1. Entering and output of data

Dificuldade:

Tarefa«Número por extenso»

💻 Python

Escreva um programa que aceite um número de 0 a 9999 e o exiba por extenso em russo. Se você inserir um número fora do intervalo, ou também se inserir algo que não seja um número, exiba a mensagem "Entrada inválida" na tela.

Formato de entrada

Uma linha contendo um único número de 0 a 9999 inclusive.

Formato de saída

Uma linha contendo uma representação verbal do número entre aspas.

Exemplo

Entrada

1234

Saída

Um mil duzentos e trinta e quatro

Dica

There will be no clue here, decide for yourself!

main.py
Teste 1
Teste 2
Teste 3
Teste 4
Teste 5
Teste 6
Teste 7
Teste 8
Teste 9
Teste 10
Teste 11
Teste 12
Teste 13
Solução do desenvolvedor
def number_to_words(n):
    """
    Преобразует число от 0 до 9999 в его словесное представление на русском языке.
    """
    if not 0 <= n <= 9999:
        return "ввод не верный"

    if n == 0:
        return "ноль"

    units = {
        1: "один", 2: "два", 3: "три", 4: "четыре", 5: "пять",
        6: "шесть", 7: "семь", 8: "восемь", 9: "девять"
    }
    teens = {
        10: "десять", 11: "одиннадцать", 12: "двенадцать", 13: "тринадцать",
        14: "четырнадцать", 15: "пятнадцать", 16: "шестнадцать",
        17: "семнадцать", 18: "восемнадцать", 19: "девятнадцать"
    }
    tens = {
        20: "двадцать", 30: "тридцать", 40: "сорок", 50: "пятьдесят",
        60: "шестьдесят", 70: "семьдесят", 80: "восемьдесят", 90: "девяносто"
    }
    hundreds = {
        100: "сто", 200: "двести", 300: "триста", 400: "четыреста",
        500: "пятьсот", 600: "шестьсот", 700: "семьсот",
        800: "восемьсот", 900: "девятьсот"
    }

    parts = []

    # Обработка тысяч
    if n >= 1000:
        thousand_val = n // 1000
        if thousand_val == 1:
            parts.append("одна тысяча")
        elif thousand_val == 2:
            parts.append("две тысячи")
        elif thousand_val in [3, 4]:
            parts.append(units[thousand_val] + " тысячи")
        else: # 5-9
            parts.append(units[thousand_val] + " тысяч")
        n %= 1000

    # Обработка сотен
    if n >= 100:
        parts.append(hundreds[n // 100 * 100])
        n %= 100

    # Обработка десятков и единиц
    if n >= 20:
        parts.append(tens[n // 10 * 10])
        n %= 10
        if n > 0:
            parts.append(units[n])
    elif n >= 10:
        parts.append(teens[n])
    elif n > 0:
        parts.append(units[n])
        
    return " ".join(parts)

# Основная часть программы для считывания ввода и вывода результата
try:
    num = int(input())
    result = number_to_words(num)
    print(result)
except ValueError:
    print("ввод не верный")

🎉 Parabéns! 🎉

Você resolveu a tarefa brilhantemente! Foi difícil, mas você encontrou a solução certa. Você está um passo mais perto de dominar a programação! Continue assim.

AD

Publicidade

red-snake blue-snake green-snake

Executando seu código...

Assistente de IA

Olá! Sou seu assistente de programação. Faça qualquer pergunta sobre Python — posso explicar funções, métodos e ajudá-lo com a tarefa atual!