У вас код синтаксически некорректен.
Лучше вообще как-то так:
>>> a = 'ddf%%21b#'
>>> b = '%%$ #'
>>>
>>>
>>> any([x.isdigit() or x.isalpha() for x in a])
True
>>> any([x.isdigit() or x.isalpha() for x in b])
False
>>>
Если нужна проверка что входит И число, И большая, И маленькая буква - то:
>>> a = 'fgdf1'
>>> all([
any([x.isdigit() for x in a]),
any([x.isalpha() and x.islower() for x in a]),
any([x.isalpha() and x.isupper() for x in a])
])
False
>>> a = 'ssdS2'
True
>>> a = '4455'
False
>>> a = '4##sedfsdfD'
True
Регулярками:
>>> import re
>>> bool(re.match('.*([a-z]|[A_Z]|[0-9]).*', ''))
False
>>> bool(re.match('.*([a-z]|[A_Z]|[0-9]).*', '$###@@*'))
False
>>> bool(re.match('.*([a-z]|[A_Z]|[0-9]).*', '$##e#@@*'))
True
>>> bool(re.match('.*([a-z]|[A_Z]|[0-9]).*', '$##34#@@*'))
True
>>>
> (любого алфавита)
Но с этим придется попотеть. Поэтому первый способ предпочтителен.