Python“TypeError:'<'在'int'和'NoneType'的实例之间不受支持”

2024-10-02 12:35:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在为学校编写一个简单的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”。 实际结果:打印错误代码


Tags: 程序lenreturnifdef数字学校int
1条回答
网友
1楼 · 发布于 2024-10-02 12:35:28
omregnet = omregn(input("Indtast romertal her:").capitalize())

您不应该在这里使用capitalizecapitalize使字符串的第一个字符大写,其余字符小写。例如,"IV".capitalize()变成{}。这是一个问题,因为omkodchiffer不知道如何处理小写的V。因此它返回None,并且None值被用于条件语句中的一个不等式中,在那里它无法与整数进行合理的比较。在

请改用.upper()。在

^{pr2}$

相关问题 更多 >

    热门问题