Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 8, 2016 13:31:08

megoloman
Зарегистрирован: 2015-10-26
Сообщения: 113
Репутация: +  0  -
Профиль   Отправить e-mail  

некорректно работает конструкция if else

Здравствуйте! Помогите пожалуйста разобраться с некорректно работающей конструкцией if else:

b = {}
if "orange" and not "lime" in b:
    print "orange"
elif "orange" and "lime" in b:
    print "both"
elif "lime" and not "orange" in b:
    print "lime"
else:
    print "NO one"

Но почему то при пустом словаре печатает “orange”, хотя должно печатать “NO one”, а при b = {“lime”:1} печатает “both”, хотя должно печатать “lime”. Остальные 2 условия работают верно.

Офлайн

#2 Апрель 8, 2016 13:43:03

ayb
Зарегистрирован: 2014-04-01
Сообщения: 297
Репутация: +  24  -
Профиль   Отправить e-mail  

некорректно работает конструкция if else

Почему некорректное ? Читайте книгу. Непустая строка кастится к True.

Офлайн

#3 Апрель 8, 2016 15:02:59

r00tl3ss
Зарегистрирован: 2016-03-31
Сообщения: 25
Репутация: +  5  -
Профиль   Отправить e-mail  

некорректно работает конструкция if else

В вашем примере билиберда со сравнениями.
В сравнении:

>>>'orange' and 'lime'
'lime'
>>>

Для ясности пример можно переписать так:
b = {}
if ('orange' in b) and ('lime' not in b):
	print 'orange'
elif ('orange' in b) and ('lime' in b):
	print 'both'
elif ('lime' in b) and ('orange' not in b):
	print 'lime'
else:
	print 'no one'

Офлайн

#4 Апрель 8, 2016 15:06:42

megoloman
Зарегистрирован: 2015-10-26
Сообщения: 113
Репутация: +  0  -
Профиль   Отправить e-mail  

некорректно работает конструкция if else

Спасибо

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version