2015-11-29 4 views
0

Что произойдет, если вы сравните строки с числом? Что происходит за кулисами? Почему это не дает мне ошибку и вместо этого печатает «meh» все время независимо от того, находится ли b внутри a и c или нет?Сравнение строки и числа в Python

a = "900" 
b = 1055 
c = "2000" 

if a <=b <= c: 
    print "bingo" 
else: 
    print "meh" 
+0

Этот вопрос был дан ответ здесь: http://stackoverflow.com/a/3270689/2207688 – Ayuto

ответ

0

Я считаю, что если сравнивать строки с регулярным числами, то вместо этого захватить значения ASCII символов в строке, и сравнить их с помощью этого значения. Таким образом, b не будет меньше c, так как значения ASCII для символов в «2000» будут значительно ниже целочисленного значения 1055.

Кроме того, более приятный ответ можно найти here по тому же вопросу.

+0

Большое вам спасибо за ваш ответ! – lavenderLatte

0

на самом деле, будет больше, чем с чем б потому, что питон будет использовать первый символ в качестве значения в ASCII

>>> a > b # ord('9') is 57 which is greater than ord('1') 49 
True 
>>> a > C# ord('2') is 50, so a is greater because the first '9' value is greater that '2' (57 > 50) 
True 
>>> c > b # same thing, ord('2') is 50 and ord('1') is 49, so c is greater 
True 
+0

большое спасибо! – lavenderLatte

Смежные вопросы