>>> '10'>'3'
False
>>>
>>> a=['10','9','8','7']
>>> a.sort()
>>> a
['10', '7', '8', '9']

Почему '10' меньше '3'? Я попробовал еще несколько значений, но с ним происходит то же самое.

>>> '10'>'3'
False
>>>
>>> a=['10','9','8','7']
>>> a.sort()
>>> a
['10', '7', '8', '9']
>>>

Я ожидаю, что результат '10'>'3' будет True.

-3
Sai Krishna Maddali 5 Июл 2019 в 18:42

3 ответа

Лучший ответ

Поскольку вы сравниваете значения как строки, в которых каждый символ в первой строке проверяется на соответствие одному и тому же индексному символу во второй строке, результаты будут другими. Например, сравнивая '10' и '3', '1' будет помещен перед 3, поэтому строка '10' будет помещена перед '3', когда заказал.

Если вы хотите сравнить их как числа, вам придется удалить окружающие их апострофы:

>>> 10>3

Вместо того:

>>> '10'>'3'
1
Omari Celestine 5 Июл 2019 в 15:53

В данный момент вы сравниваете строковое представление чисел, которые хотите сравнить друг с другом.

Если вы оставите кавычки вокруг цифр, вам будет хорошо идти. Тогда числа интерпретируются как целые числа.

0
AlexSchaefer 5 Июл 2019 в 15:48

Чтобы увидеть, что здесь происходит, просто попробуйте ord ():

ord('1')
49
ord('7')
55

Поэтому '10' > '7' становится 49 > 55, и это, очевидно, false.

1
meissner_ 5 Июл 2019 в 15:58