在一个论坛中,我发现这个很好的功能(由Pixie完成)从罗马数字转换为阿拉伯数字。
def decoder(r):
k=r
if r=="":return "Don't leave the input blank"
roman,s= {"M":1000,"CM":900, "D":500, "CD":400, "C":100, "XC":90, "L":50, "XL":40, "X":10, "IX":9, "V":5, "IV":4, "I":1},0
while r!="":
if r[:2] in roman:a,r=r[:2],r[2:]
elif r[0] in roman:a,r=r[0],r[1:]
else: return "Enter proper Decimal/Roman number as input"
s+=roman[a]
return s if encoder(int(s))==k else "Not a valid Roman Numeral"
a="MCM"
print(decoder (a.upper))
我是Python的超级新手,我不理解声明
如果罗马r[:2]
a,r=r[:2],r[2:]
我知道r[:2]
,其他人是字符串切片。我不明白的是逗号的用法:
a,r=r[:2],r[2:]
看起来像一个元组,但为什么?这是一项任务吗?
答案 0 :(得分:0)
Python能够在样本行上分配多个值...
在这种情况下,我还将分配行移动到if
和elif
语句下的新的缩进行。
if r[:2] in roman:
a,r = r[:2], r[2:]
elif r[0] in roman:
a,r = r[0], r[1:]
第一个分配行与:
相同a = r[:2]
r = r[2:]
第二个与:
相同a = r[0]
r = r[1:]