使用if语句

时间:2017-04-26 15:21:34

标签: python if-statement

我正在尝试制作一个简单的Python代码,用罗马数字替换数字。为了做到这一点,我需要得到每个数字的位置,用等效的罗马数字代替它。但是,我的代码似乎无法正常工作。

number = range(1,21)
number = list(number)
number = str(number)
for i in number:
    for x in i:
        if i.index(x) == 0:
            if x == "1":
                x.replace(x, "X")
            elif x == "2":
                x.replace(x, "XX")
        else:
            if x == 1:
                x.replace(x, "I")
            elif x == 2:
                x.replace(x, "II")
            elif x == 3:
                x.replace(x, "III")
            elif x == 4:
                x.replace(x, "IV")
            elif x == "5":
                x.replace(x, "V")
            elif x == "6":
                x.replace(x, "VI")
            elif x == "7":
                x.replace(x, "VII")
            elif x == "8":
                x.replace(x, "VIII")
            elif x == "9":
                x.replace(x, "IX")
            else:
                x.replace(x, "")
print number

我怀疑它与if语句的工作方式有关,但我不确定。任何建议将不胜感激。

1 个答案:

答案 0 :(得分:1)

一长串ifelif条款通常表示应该使用一个或多个dicts。

numstrings = [str(i) for i in range(1, 100)]

d0 = {'0':'', '1':'I', '2':'II', '3':'III', '4':'IV',
      '5':'V', '6':'VI', '7':'VII', '8':'VIII', '9':'IX'}
d10 = {'0':'', '1':'X', '2':'XX', '3':'XXX', '4':'XL',
      '5':'L', '6':'LX', '7':'LXXX', '8':'LXXX', '9':'XC'}
for s in numstrings:
    if len(s) == 1:
        r = d0[s]
    elif len(s) == 2:
        r = d10[s[0]] + d0[s[1]]
    else:
        r = '??'
    print(r)