Найти - Пользователи
Полная версия: некорректно работает конструкция if else
Начало » Python для новичков » некорректно работает конструкция if else
1
megoloman
Здравствуйте! Помогите пожалуйста разобраться с некорректно работающей конструкцией 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 условия работают верно.
ayb
Почему некорректное ? Читайте книгу. Непустая строка кастится к True.
r00tl3ss
В вашем примере билиберда со сравнениями.
В сравнении:
>>>'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'
megoloman
Спасибо
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB