#28637: python '>=' not supported between instance of 'int' and 'str'


lh570841@gmail.com (Jeff)

學校 : 不指定學校
編號 : 111302
來源 : [27.53.136.79]
最後登入時間 :
2024-04-26 14:10:11
a013. 羅馬數字 -- NPSC 模擬試題 | From: [111.251.43.214] | 發表日期 : 2021-12-22 21:27

t = {'M' : 1000, 'D' : 500, 'C' : 100, 'L' : 50, 'X' : 10, 'V' : 5, 'I' : 1

     , 'IV' : 4, 'IX' : 9, 'XL' : 40, 'XC' : 90, 'CD' : 400, 'CM' : 900}

 

b = {1000 : 'M', 900 : 'CM', 500 : 'D', 400 : 'CD', 100 : 'C', 90 : 'XC', 50 : 'L'

     , 40 : 'XL', 10 : 'X', 9 : 'IX', 5 : 'V', 4 : 'IV', 1 : 'I'}

 

def turn_num_other(n):

    list1 = [t[c] for c in n]

    for i in range(len(n)-1):

        if list1[i] < list1[i+1]:

            list1[i] *= -1

    ans2 = sum(list1)

    

    return ans2

 

def turnchar(x):

    l = ''

    d = 0

    while d == 0:

        if x >= 0:

            for key in b:

                if x >= key:

                    x -= key

                    l += b[key]

                    break

                else:

                    continue

        if x == 0:

            d = 1

    return l

 

a, b = input().split()

while a != '#':

    a1 = turn_num_other(a)

    b1 = turn_num_other(b)

    

    if a1 > b1:

        k = a1 - b1

        print(k)

        print(type(k))

        final1 = turnchar(k)

        print(final1)

    elif a1 == b1:

        print('ZERO')

    if a1 < b1:

        k = b1 - a1

        print(k)

        print(turnchar(k))

    a, b = input().split()

 

他是說在 if x >= key 有錯  不過兩個的type都是int為何會有這錯誤?

 
#28640: Re:python '>=' not supported between instance of 'int' and 'str'


cges30901 (cges30901)

學校 : 不指定學校
編號 : 30877
來源 : [39.9.74.255]
最後登入時間 :
2024-10-14 22:20:08
a013. 羅馬數字 -- NPSC 模擬試題 | From: [27.247.232.1] | 發表日期 : 2021-12-22 22:11

t = {'M' : 1000, 'D' : 500, 'C' : 100, 'L' : 50, 'X' : 10, 'V' : 5, 'I' : 1

     , 'IV' : 4, 'IX' : 9, 'XL' : 40, 'XC' : 90, 'CD' : 400, 'CM' : 900}

 

b = {1000 : 'M', 900 : 'CM', 500 : 'D', 400 : 'CD', 100 : 'C', 90 : 'XC', 50 : 'L'

     , 40 : 'XL', 10 : 'X', 9 : 'IX', 5 : 'V', 4 : 'IV', 1 : 'I'}

 

def turn_num_other(n):

    list1 = [t[c] for c in n]

    for i in range(len(n)-1):

        if list1[i] < list1[i+1]:

            list1[i] *= -1

    ans2 = sum(list1)

    

    return ans2

 

def turnchar(x):

    l = ''

    d = 0

    while d == 0:

        if x >= 0:

            for key in b:

                if x >= key:

                    x -= key

                    l += b[key]

                    break

                else:

                    continue

        if x == 0:

            d = 1

    return l

 

a, b = input().split()

while a != '#':

    a1 = turn_num_other(a)

    b1 = turn_num_other(b)

    

    if a1 > b1:

        k = a1 - b1

        print(k)

        print(type(k))

        final1 = turnchar(k)

        print(final1)

    elif a1 == b1:

        print('ZERO')

    if a1 < b1:

        k = b1 - a1

        print(k)

        print(turnchar(k))

    a, b = input().split()

 

他是說在 if x >= key 有錯  不過兩個的type都是int為何會有這錯誤?

不是啊,key的type是str,因為b是str,是輸入的第二個羅馬數字

 
#28662: Re:python '>=' not supported between instance of 'int' and 'str'


lh570841@gmail.com (Jeff)

學校 : 不指定學校
編號 : 111302
來源 : [27.53.136.79]
最後登入時間 :
2024-04-26 14:10:11
a013. 羅馬數字 -- NPSC 模擬試題 | From: [111.251.43.214] | 發表日期 : 2021-12-24 19:09

t = {'M' : 1000, 'D' : 500, 'C' : 100, 'L' : 50, 'X' : 10, 'V' : 5, 'I' : 1

     , 'IV' : 4, 'IX' : 9, 'XL' : 40, 'XC' : 90, 'CD' : 400, 'CM' : 900}

 

b = {1000 : 'M', 900 : 'CM', 500 : 'D', 400 : 'CD', 100 : 'C', 90 : 'XC', 50 : 'L'

     , 40 : 'XL', 10 : 'X', 9 : 'IX', 5 : 'V', 4 : 'IV', 1 : 'I'}

 

def turn_num_other(n):

    list1 = [t[c] for c in n]

    for i in range(len(n)-1):

        if list1[i] < list1[i+1]:

            list1[i] *= -1

    ans2 = sum(list1)

    

    return ans2

 

def turnchar(x):

    l = ''

    d = 0

    while d == 0:

        if x >= 0:

            for key in b:

                if x >= key:

                    x -= key

                    l += b[key]

                    break

                else:

                    continue

        if x == 0:

            d = 1

    return l

 

a, b = input().split()

while a != '#':

    a1 = turn_num_other(a)

    b1 = turn_num_other(b)

    

    if a1 > b1:

        k = a1 - b1

        print(k)

        print(type(k))

        final1 = turnchar(k)

        print(final1)

    elif a1 == b1:

        print('ZERO')

    if a1 < b1:

        k = b1 - a1

        print(k)

        print(turnchar(k))

    a, b = input().split()

 

他是說在 if x >= key 有錯  不過兩個的type都是int為何會有這錯誤?

不是啊,key的type是str,因為b是str,是輸入的第二個羅馬數字


我發現錯誤了  我上面的DICT命名也是b,我把input的變數名稱改成C就沒問題了

感謝~

 
ZeroJudge Forum