Maison  >  Article  >  développement back-end  >  Python implémente simplement la conversion entre les chiffres arabes et les chiffres romains

Python implémente simplement la conversion entre les chiffres arabes et les chiffres romains

不言
不言original
2018-04-17 10:32:473130parcourir

Cet article présente principalement l'implémentation simple par Python de la conversion des chiffres arabes et des chiffres romains les uns vers les autres, impliquant les compétences opérationnelles de Python pour le parcours de chaînes et de listes, les opérations, etc. Les amis dans le besoin peuvent s'y référer

L'exemple de cet article décrit comment Python implémente la fonction de conversion entre les chiffres arabes et les chiffres romains. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :

L'article précédent présentait "Implémentation Java pour résoudre le problème de la conversion des chiffres romains classiques et des chiffres arabes", voici un aperçu de la méthode d'implémentation dans Python.

La question est très simple. Si vous avez déjà posé ce genre de question, je pense que vous ne serez pas étranger à ce que sont les chiffres romains. Les chiffres romains sont une méthode de comptage très ancienne et sont encore visibles à certains endroits. aujourd'hui, pour l'utiliser, publions simplement deux images de Wikipédia pour passer brièvement en revue les chiffres romains :

Aujourd'hui, implémentons simplement les chiffres arabes. . Le problème de conversion entre chiffres romains et chiffres romains est très simple et je n'entrerai pas dans les détails ici. Voici l'implémentation spécifique :

#!usr/bin/env python
#encoding:utf-8
'''''
__Author__:沂水寒城
功能:阿拉伯数字和罗马数字的互相转换
'''
def transform_alabo2_roman_num(one_num):
  '''''
  将阿拉伯数字转化为罗马数字
  '''
  num_list=[1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1]
  str_list=["M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"]
  res=''
  for i in range(len(num_list)):
    while one_num>=num_list[i]:
      one_num-=num_list[i]
      res+=str_list[i]
  return res
def transform_roman_num2_alabo(one_str):
  '''''
  将罗马数字转化为阿拉伯数字
  '''
  define_dict={'I':1,'V':5,'X':10,'L':50,'C':100,'D':500,'M':1000}
  if one_str=='0':
    return 0
  else:
    res=0
    for i in range(0,len(one_str)):
      if i==0 or define_dict[one_str[i]]<=define_dict[one_str[i-1]]:
        res+=define_dict[one_str[i]]
      else:
        res+=define_dict[one_str[i]]-2*define_dict[one_str[i-1]]
    return res
    # #下面这种写法也可以
    # for i in range(len(one_str)):
    #   if i > 0 and define_dict[one_str[i]] > define_dict[one_str[i - 1]]:
    #     res -= define_dict[one_str[i - 1]]
    #     res += define_dict[one_str[i]] - define_dict[one_str[i - 1]]
    #   else:
    #     res += define_dict[one_str[i]]
    # return res
if __name__ == &#39;__main__&#39;:
  print &#39;**************将罗马数字转化为阿拉伯数字**************&#39;
  one_str_list=[&#39;DII&#39;,&#39;XV&#39;,&#39;MDCLXVI&#39;,&#39;XII&#39;,&#39;VIII&#39;,&#39;XCIX&#39;,&#39;XII&#39;]
  for one_str in one_str_list:
    print one_str,&#39;----->&#39;,transform_roman_num2_alabo(one_str)
  print &#39;**************将阿拉伯数字转化为罗马数字**************&#39;
  one_num_list=[77,66,55,8,1200,34,65,3,21,99]
  for one_num in one_num_list:
    print one_num,&#39;----->&#39;,transform_alabo2_roman_num(one_num)

Les résultats sont les suivants :

Recommandations associées :

Python implémente l'API de reconnaissance vocale Baidu

Python implémente la méthode de résolution du plus grand diviseur commun

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn