/ / Защо този логичен израз в python False? - питон, израз

Защо е това логическо изражение в Python False? - питън, израз

Въпросът ми е, защо тези изрази са фалшиви?

Python 2.6.4 (r264:75706, Dec  7 2009, 18:45:15)
[GCC 4.4.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.

>>> num = raw_input("Choose a number: ")
Choose a number: 5
>>> print num
5
>>> print ( num < 18 )
False
>>> print ( num == 5 )
False

Защото ако опитам това:

>>> print ( num > 0 )
True

Изразът работи добре.

Отговори:

9 за отговор № 1

Това твърдение:

num = raw_input("Choose a number: ")

прави num а низ, а не число, въпреки подвеждащото му име. Случва се така, че Python 2 ви позволява да сравнявате низове с числа и във вашата версия разглежда всички низове, по-големи от всички числа ( съдържание на низа не играят роля).

употреба num = int(num) да направите цяло число (и не забравяйте да използвате опит / освен да уловите възможни грешки, когато потребителят е въвел нещо различно от число!), преди да започнете да сравнявате.

(В Python 3 името на функцията се променя от raw_input да се input, и тя все още връща низове; обаче в Python 3 сравняването на низ с число се счита за грешка, така че ще получите по-скоро изключение True или False във всеки ваш опит за сравнение).


3 за отговор № 2

Променливата num всъщност не съдържа номера 5; тя съдържа низ "5", Тъй като Python е силно набран, 5 == "5" е False, Опитайте първо да го преобразувате в цяло число:

>>> print (int(num) < 18)
True

2 за отговор № 3

num е низ. Не можете смислено да сравнявате низ с цяло число и низът никога не е равен на цяло число (така == връща невярно и < и > върнете каквото искат). Причината, че < и > не хвърляйте грешка (преди python 3), когато сравнявате низове и цели числа, е да можете да сортирате разнородни списъци.


1 за отговор № 4

Опитвам num = float(raw_input("Choose..."))

Вие оценявате низ в булевите си изрази.