我正在为学校编写一个简单的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”。 实际结果:打印错误代码
您不应该在这里使用}。这是一个问题,因为
capitalize
。capitalize
使字符串的第一个字符大写,其余字符小写。例如,"IV".capitalize()
变成{omkodchiffer
不知道如何处理小写的V。因此它返回None,并且None值被用于条件语句中的一个不等式中,在那里它无法与整数进行合理的比较。在请改用
^{pr2}$.upper()
。在相关问题 更多 >
编程相关推荐