如何解决编写使用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大于0,就循环浏览罗马数字映射中的每个键值对
- 只要整数大于或等于键,就取该键的值并将其添加到空变量“罗马”中。
我无法理解最后一步,这就是为什么必须从输入的整数中减去键的原因。记录后,该键值对是否会从映射中删除?有人可以帮我理解这个逻辑
解决方法
您只需要根据需要多次添加每个键。您不会更改参考列表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 举报,一经查实,本站将立刻删除。