#python #python-3.x #if-statement #output #comparison
Вопрос:
Оператор сравнения работает неправильно
class Solution:
def romanToInt(self, s: str) -> int:
dic = {"I":1,"V":5,"X":10,"L":50,"C":100,"D":500,"M":1000}
result = 0
s = list(s)
while True:
if len(s) == 1:
x = s.pop(0)
result =dic[x]
break
elif len(s) == 0:
break
else:
Оператор сравнения работает неправильно
if (dic[s[0]] < dic[s[1]]) == True: #gives true for 1000<10
result = dic[s[1]] - dic[s[0]]
s.pop(0)
s.pop(0)
Он прямо прыгает сюда
elif (dic[s[0]] >= dic[s[1]] )== True:
result = dic[s[1]] dic[s[0]]
s.pop(0)
s.pop(0)
return result
o = Solution()
print(o.romanToInt("MCMXCIV"))
Комментарии:
1.
1000 < 10 == True
это ложь . Вот почему он прыгает вelif
блок. Понятно, почему вы думаете, что это «дает истину за 1000 Если бы это оценивалосьTrue
как если бы не перескакивало наelif
блок.