微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

编写使用Python编程将给定整数转换为罗马数字的函数

如何解决编写使用Python编程将给定整数转换为罗马数字的函数

我正在做一些编码练习,并试图研究如何编写将给定整数转换为罗马数字的函数。下面是我编写的代码

roman_map = [(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')]

from multiprocessing import Process
Pros = []
batch_size = 3
ids = [100,101,102,103,104,105,106,107,108,109]
for i in range(0,len(ids),batch_size):
  print(str(ids[i]))
  print("Thread Started")
  p = Process(target=getEmployeeData,args=(str(ids[i]),))
  Pros.append(p)
  p.start()
  for t in Pros:
     t.join()

我试图理解代码上使用的逻辑,并了解以下内容

  1. 取整数1
  2. 只要1大于0,就循环浏览罗马数字映射中的每个键值对
  3. 只要整数大于或等于键,就取该键的值并将其添加到空变量“罗马”中。

我无法理解最后一步,这就是为什么必须从输入的整数中减去键的原因。记录后,该键值对是否会从映射中删除?有人可以帮我理解这个逻辑

解决方法

您只需要根据需要多次添加每个键。您不会更改参考列表roman map。步骤3是通用的,因此您可以处理诸如1234之类的重复字母。内部while循环将添加M,然后添加C两次,然后添加X三个次,最后IV

如果您想更全面地理解代码,请执行尽职调查:插入几个策略性print语句以跟踪数据和执行。例如

print(key,value,n,roman)

应该给您很好的跟踪情况。

,

最后一步是n-=key,不,这不会从dict roman_map中删除任何内容。它的作用是从n中减去刚完成的循环中发现罗马部分的数量。

整数是1001天。代码(简而言之)将检查{1000: 'M'},并将M添加到roman。现在,它必须从key (1000)中减去n,剩下1,最终将在稍后的for循环中对其进行处理,届时它将在字符串后附加I roman

总体而言,每次代码找到要添加的罗马数字时,都必须从整数中减去它代表的数量。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。