Python“TypeError:’<’ ‘int’和’NoneType’实例之间不支持

Python “TypeError: '<' not supported between instances of 'int' and 'NoneType'”

我正在为学校编写这个简单的python程序,它使用罗马数字并将其转换为阿拉伯数字。例如:i=1,x=10等

当转换简单的数字时,程序工作得很好,但是当需要转换需要减法的数字时,问题就出现了。例如,当输入"iv"时,程序应该打印4,而不是吐出一个错误代码。

我尝试将输入设置为int,但是这给了我一个新的错误代码。奇怪的是,当我把它交上来的时候,它就工作了,但是当我后来把它下载回我的机器并删除了评论后,它就坏了。而且它基本上是教师代码的复制粘贴,所以是的。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
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
omregnet = omregn(input("Indtast romertal her:").capitalize())

这里不应该使用capitalizecapitalize使字符串的第一个字符大写,其余的字符小写。例如,"IV".capitalize()变为"Iv"。这是一个问题,因为omkodchiffer不知道如何处理小写v。因此它返回none,并且在条件条件中的一个不等式中没有使用任何值,因为它无法与整数进行合理比较。

.upper()代替。

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