#39336: (python)卡在 line14 ,求救


peter26 (瑪卡巴卡)

學校 : 基隆市私立二信高級中學
編號 : 260646
來源 : [210.71.40.108]
最後登入時間 :
2024-04-26 13:04:51
a013. 羅馬數字 -- NPSC 模擬試題 | From: [111.248.250.134] | 發表日期 : 2024-02-07 20:35

roman = {
    'I' : 1,
    'IV' : 4,
    'V' : 5,
    'VX' : 9,

    'X' : 10,
    'XL' : 40,
    'L' : 50,
    'XC' : 90,

    'C' : 100,
    'CD' : 400,
    'D' : 500,
    'CM' : 900,

    'M' : 1000
    }

def num_roman(num = 0, roman = roman ):
    if num == 0:
        return 'ZERO'
    key_array = list( roman.keys() )
    value_array = list( roman.values() )
    string = ''
    key_array.reverse()
    value_array.reverse()
    for i in range( 13 ):
        while value_array[i] <= num:
            num -= value_array[i]
            string += key_array[i]
    return string

def roman_num(string = '', roman = roman ):
    if string == '' or string == None:
        return 0
    key_array = list( roman.keys() )
    value_array = list( roman.values() )
    num = 0
    x = 0
    y = 2
    while True:
        if x >= len(string) or y > len(string):
            if y == x + 2:
                y -= 1
                continue
            return num
        if string[x:y] in key_array:
            num += roman[key_array[key_array.index(string[x:y])]]
            x = y + 0
            y = x + 2
            continue
        y = x + 1
       
while True:
    input_ = input()
    if input_ == '#':
        break
    nums = list( map( roman_num, input_.split() ) )
    nums.sort()
    print( num_roman( abs( nums[1] - nums[0] ) ) )
 
#39339: Re: (python)卡在 line14 ,求救


peter26 (瑪卡巴卡)

學校 : 基隆市私立二信高級中學
編號 : 260646
來源 : [210.71.40.108]
最後登入時間 :
2024-04-26 13:04:51
a013. 羅馬數字 -- NPSC 模擬試題 | From: [111.248.250.134] | 發表日期 : 2024-02-07 23:58

roman = {
    'I' : 1,
    'IV' : 4,
    'V' : 5,
    'VX' : 9,

    'X' : 10,
    'XL' : 40,
    'L' : 50,
    'XC' : 90,

    'C' : 100,
    'CD' : 400,
    'D' : 500,
    'CM' : 900,

    'M' : 1000
    }

def num_roman(num = 0, roman = roman ):
    if num == 0:
        return 'ZERO'
    key_array = list( roman.keys() )
    value_array = list( roman.values() )
    string = ''
    key_array.reverse()
    value_array.reverse()
    for i in range( 13 ):
        while value_array[i] <= num:
            num -= value_array[i]
            string += key_array[i]
    return string

def roman_num(string = '', roman = roman ):
    if string == '' or string == None:
        return 0
    key_array = list( roman.keys() )
    value_array = list( roman.values() )
    num = 0
    x = 0
    y = 2
    while True:
        if x >= len(string) or y > len(string):
            if y == x + 2:
                y -= 1
                continue
            return num
        if string[x:y] in key_array:
            num += roman[key_array[key_array.index(string[x:y])]]
            x = y + 0
            y = x + 2
            continue
        y = x + 1
       
while True:
    input_ = input()
    if input_ == '#':
        break
    nums = list( map( roman_num, input_.split() ) )
    nums.sort()
    print( num_roman( abs( nums[1] - nums[0] ) ) )


沒事,我 IX 打成 VX

 
ZeroJudge Forum