Code Kata | day6 roman_to_num


Q.ローマ字を数字1~3999の間のローマ字sに変換してパラメータとして、該当する数字を返してください.

0回

  • 文字の値
  • を指定します.
  • 異常を使用して ifをスクリーニング

    ▼▼▼1回

    def roman_to_num(s):
      # 여기에 코드를 작성해주세요.
        I = s.count('I') * 1
        V = s.count('V')* 5
        X = s.count('X') * 10
        L = s.count('L') * 50
        C = s.count('C') * 100
        D = s.count('D') * 500
        M = s.count('M') * 1000
        
        result = I + V + X + L + C + D + M
    
        if 'IV' in s or 'IX' in s:
          result -= 2
        if 'XL' in s or 'XC' in s:
          result -= 20
        if 'CD' in s or 'CM' in s:
          result -= 200
        return result
    元のルールで計算された値と例外の場合に計算された値の差を返す変数に適用されます.

    2回目

    def roman_to_num2(s):
      # 여기에 코드를 작성해주세요.
      dict={'I' : 1,
            'V' : 5,
            'X' : 10,
            'L' : 50,
            'C' : 100,
            'D' : 500,
            'M' : 1000}
    
      a = 0
      for i in s :
        a += dict[i]
    
      if 'IV' in s or 'IX' in s:
        a -= 2
      if 'XL' in s or 'XC' in s:
        a -= 20
      if 'CD' in s or 'CM' in s:
        a -= 200
    
      return a
    ローマ字と指定された数字をディクシャナに格納します.forを使用して、aを返す値を累計して格納します.
    コード長は似ていますが、「ディック・シャナリー」と「for」を使用して重複コードを消去します.
    その後、ローマ字を追加する場合は、修正する部分が少なくなります.