罗马整数到整数Simp

2024-04-26 18:34:41 发布

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

赋值要求将罗马整数转换为整数。但是没有与罗马整数相关的语法(即IV!=4 IV=6)我正在努力提高代码的效率。。。你知道吗

这是我的原始代码:

def roman_v2():
    s = input("Enter a roman number using capital letters M, D, C, X, V and I: ")
    count = 0
    r_nums = ["M","D","C","X","V","I"]
    for letter in s:
        if letter in r_nums[0]:
            count += 1000
        elif letter in r_nums[1]:
            count += 500
        elif letter in r_nums[2]:
            count += 100
        elif letter in r_nums[3]:
            count += 10
        elif letter in r_nums[4]:
            count += 5
        elif letter in r_nums[5]:
            count += 1    
    return count

下面是我的程序错误:

def roman_v2():
    s = input("Enter a roman number using capital letters M, D, C, X, V and I: ")
    count = 0
    r_nums = [["M",1000],["D",500],["C",100],["X",10],["V",5],["I",1]]
    for i in s:
        for j in range(0,5):
            if s[i] == r_nums[j][0]:
                count += r_nums[i][1]
    return count

Tags: 代码innumberforinputdefcount整数
3条回答

这个

if s[i] == r_nums[j][0]:

应该是

if i == r_nums[j][0]:

因为我将是角色,而不是索引。你知道吗

count += r_nums[i][1]中,i是错误的,应该是j

给你

def roman_v2():
    s = input("Enter a roman number using capital letters M, D, C, X, V and I: ")
    count = 0
    r_nums = [["M",1000],["D",500],["C",100],["X",10],["V",5],["I",1]]
    for i in s:
        for j in range(0,5):
            if i == r_nums[j][0]:
                count += r_nums[j][1]
    return count

您可以使用字典和sum()函数来压缩代码:

def roman_v2():
    s = input("Enter a roman number using capital letters M, D, C, X, V and I: ")
    numbers = {'M':1000, 'D':500, 'C':100, 'X':10, 'V':5, 'I':1}
    return sum(numbers[num] for num in s)

这将查找每个字母的值,将它们全部相加,然后返回总数。错误检查(对于错误输入,如'MMpotato')由您决定。你知道吗

可以在python中使用dict

def roman_v2():
    s = s = input("Enter a roman number using capital letters M, D, C, X, V and I: ")
    r_nums = {'M': 1000, 'D': 500, 'C': 100, 'X': 10, 'V': 5, 'I': 1}
    count = 0
    for i in s:
        count += r_nums.get(i)
    return count

相关问题 更多 >