почему ('1' == 1) оценивается как False? - PullRequest
0 голосов
/ 28 апреля 2020

Я не мог понять, что если python просто преобразует выражения с обеих сторон == в определенный тип, почему это не равно True

Ответы [ 4 ]

2 голосов
/ 28 апреля 2020

Вы проверяете, равна ли строка целому числу, которого никогда не может быть. Python не преобразует значения с обеих сторон == в один и тот же тип. 1 == 1 вернет True, а "1" == "1" вернет True, но строка "1" не равна целому числу 1.

0 голосов
/ 29 апреля 2020

В Python, == считается оператором равенства, тогда как = считается оператором присваивания. В приведенном вами примере Python не преобразует выражения на каждой стороне оператора в конкретный тип данных. Скорее, он оценивает, равны ли символы или значения на каждой стороне оператора. Учитывая, что '1' считается строкой, а 1 считается целым числом, указанное вами выражение вернет False. Если бы вам пришлось использовать приведение, чтобы убедиться, что значения на каждой стороне оператора имеют одинаковый тип данных, тогда выражение вернет True. Например, int('1') == 1 и '1' == str(1) вернут True.

0 голосов
/ 28 апреля 2020

В python вещи внутри '' или "" считаются строкой. Так что для условия if ('1' == 1) возвращает false. Но python имеет преобразование типа, где if (int ('1') == 1) вернет true.

0 голосов
/ 28 апреля 2020

Потому что они не сравнимые типы. Если вы поставите число в кавычки, оно станет строкой. Это в основном означает, что к нему относятся как к букве или набору букв, а не как к числу, которое может быть использовано для математики. Таким образом, выражение действительно спрашивает, является ли буква 1 такой же, как число 1. И хотя они могут выглядеть одинаково для человека, программа видит их совершенно разными.

оператор == делает ничего не преобразовывать, это больше похоже на функцию, которая просматривает два входа, проверяет, совпадают ли они, и возвращает логическое значение (true или false).

Если вы хотите сравнить строку и целое число в python, то вам нужно выполнить преобразование для одного или обоих из них, указав программе, во что преобразовать ее:

var1 = 132
var2 = "132"

print(str(var1) == str(var2))
print(int(var1) == int(var2))
print(var1 == var2)

вернет

true
true
false

str() говорит интерпретатору обрабатывать переменную как строку, тогда как int() говорит ему обрабатывать ее как число.

print(str(var1)+str(var2))
print(int(var1)+int(var2))

будет вернуть 123123 и 246 соответственно.

...