我写了学校这个简单的Python程序,它需要一个罗马数字,并将其转换成数字阿拉伯人。 E.g:I = 1,X = 10等
将简单的数字时,该程序工作正常,但是当它需要的是需要扣除的数字转换,他就会出现问题。例如,当“IV”被给定为输入,程序应该打印4,而不是将其吐出的错误代码。
我试过设置输入作为一个int,然而这只是给了我一个新的错误代码。奇怪的是这个工作时,我递给它,但是当我后来下载了它回到我的机器并删除了评论,它打破了。此外,它基本上的教师代码复制粘贴,所以是的。
def omkodchiffer(c):
if c == "I":
return 1
if c == "V":
return 5
if c == "X":
return 10
if c == "L":
return 50
if c == "C":
return 100
if c == "D":
return 500
if c == "M":
return 1000
def omregn(t):
arabertal = 0
for i in range(0, len(t)):
if i < len(t) - 1:
if omkodchiffer(t[i]) < omkodchiffer(t[i + 1]):
arabertal -= omkodchiffer(t[i])
i += 1
elif omkodchiffer(t[i]) >= omkodchiffer(t[i + 1]):
arabertal += omkodchiffer(t[i])
i += 1
else:
arabertal += omkodchiffer(t[i])
return arabertal
omregnet = omregn(input("Indtast romertal her:").capitalize())
print(omregnet)
预期结果:当给出“IV”的程序来打印“4”。实际结果:错误代码印
omregnet = omregn(input("Indtast romertal her:").capitalize())
你不应该使用capitalize
这里。 capitalize
使得字符串资本的第一个字符,其余小写。例如,"IV".capitalize()
变得"Iv"
。这是一个问题,因为omkodchiffer
不知道如何处理小写五,所以返回None,并且没有价值在你的条件语句,它不能比较理智的整数不等式的一个应用。
使用.upper()
代替。
omregnet = omregn(input("Indtast romertal her:").upper())