#41960: PYTHON求助


cosmo950317@gmail.com (一生百鬼組peko)

學校 : 不指定學校
編號 : 276990
來源 : [124.6.8.241]
最後登入時間 :
2024-09-19 21:38:47
a013. 羅馬數字 -- NPSC 模擬試題 | From: [122.121.24.153] | 發表日期 : 2024-09-13 22:34

我自己測以及測試執行都沒問題,但實際測試都WA

原本答案是MCMXCVIII都會變成MMCCXVIII

while True:
    roman_dict = {
         'I': 1, 'V': 5, 'X': 10,
         'L': 50, 'C': 100, 'D': 500, 'M': 1000}
    line=input().rstrip()
    if line=="#":
       break
    a,b=line.split()
    def len_2():
        value_a=[]
        value_b=[]
        for i in a:
          value_a.append(i)
          ans_a=sum(list(map(roman_dict.get,value_a)))
        for i in b:
          value_b.append(i)
          ans_b=sum(list(map(roman_dict.get,value_b)))
        return(abs(ans_a-ans_b))
    ans=len_2()
    ans_place=[]
    roman_number= [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1]
    value_roman= ['M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I']
    int_roman_dict=dict(zip(roman_number,value_roman))
    def int_roman(x):
       for i in roman_number:
          while x>=i:
             ans_place.append(int_roman_dict[i])
             x-=i
          if x==0:
             break
       return(ans_place)
    int_roman(ans)
    if ans_place==[]:
       print('ZERO')
    else:
       print(''.join(ans_place))
 
#41976: Re: PYTHON求助


sam851015@gmail.com (多挖鼻孔有益身心健康)

學校 : 不指定學校
編號 : 277705
來源 : [123.192.228.253]
最後登入時間 :
2024-11-21 19:18:13
a013. 羅馬數字 -- NPSC 模擬試題 | From: [123.192.228.253] | 發表日期 : 2024-09-15 21:01

def len_2():
value_a = []
value_b = []
for i in a:
value_a.append(i)
ans_a = sum(list(map(roman_dict.get, value_a)))
for i in b:
value_b.append(i)
ans_b = sum(list(map(roman_dict.get, value_b)))
return abs(ans_a - ans_b)

你這個羅馬數字轉十進位數字的函數有問題,考慮下面這個組合

IV VI

你的函數會將牠們都當成 6 看待,所以用你的寫法,最後會輸出 ZERO

 

 
ZeroJudge Forum