Python“ Type错误:'int'和'NoneType'实例之间不支持'<'”

时间:2019-02-04 17:58:49

标签: python

我正在为学校编写这个简单的python程序,其中需要一个罗马数字并将其转换为阿拉伯数字。 例如: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”。 实际结果:打印错误代码

1 个答案:

答案 0 :(得分:1)

omregnet = omregn(input("Indtast romertal her:").capitalize())

您不应在此处使用capitalizecapitalize使字符串的首字母大写,其余的变为小写。例如,"IV".capitalize()变为"Iv"。这是一个问题,因为omkodchiffer不知道如何处理小写的V。因此它返回None,并且在您的条件表达式中的不等式之一中使用None值,在该条件下,它无法明智地与整数进行比较。< / p>

改为使用.upper()

omregnet = omregn(input("Indtast romertal her:").upper())