Converter Inteiro para Algarismos Romanos

Beginner

This tutorial is from open-source community. Access the source code

Introdução

Os algarismos romanos são um sistema numérico que se originou na Roma antiga. Eles ainda são usados hoje em vários contextos, como na numeração de capítulos de livros e sequências de filmes. Neste desafio, você será encarregado de criar uma função que converta um inteiro entre 1 e 3999 (inclusive) para sua representação em algarismos romanos.

Inteiro para Algarismo Romano

Escreva uma função to_roman_numeral(num) que recebe um inteiro num entre 1 e 3999 (inclusive) e retorna sua representação em algarismos romanos como uma string.

Para converter um inteiro para sua representação em algarismos romanos, você pode usar uma lista de pesquisa contendo tuplas na forma de (valor romano, inteiro). Em seguida, você pode usar um loop for para iterar sobre os valores na lista de pesquisa e usar divmod() para atualizar num com o resto, adicionando a representação em algarismos romanos ao resultado.

Sua função deve retornar a representação em algarismos romanos do inteiro de entrada.

def to_roman_numeral(num):
  lookup = [
    (1000, 'M'),
    (900, 'CM'),
    (500, 'D'),
    (400, 'CD'),
    (100, 'C'),
    (90, 'XC'),
    (50, 'L'),
    (40, 'XL'),
    (10, 'X'),
    (9, 'IX'),
    (5, 'V'),
    (4, 'IV'),
    (1, 'I'),
  ]
  res = ''
  for (n, roman) in lookup:
    (d, num) = divmod(num, n)
    res += roman * d
  return res
to_roman_numeral(3) ## 'III'
to_roman_numeral(11) ## 'XI'
to_roman_numeral(1998) ## 'MCMXCVIII'

Resumo

Neste desafio, você aprendeu como converter um inteiro para sua representação em algarismos romanos. Você usou uma lista de pesquisa contendo tuplas na forma de (valor romano, inteiro) e um loop for para iterar sobre os valores na lista de pesquisa. Você também usou divmod() para atualizar num com o resto, adicionando a representação em algarismos romanos ao resultado.