Как работают методы .isupper и .islower?

Методы .isupper и .islower отказываются нормально работать. Данный код:

def code_into_bin(code,bin_code):
    for i in range(len(code)):
        bin_code.append([])
        print(i)
        if code[i].isupper:
            bin_code[i]=1
            print(bin_code)
        else:
            bin_code[i]=0
            print(bin_code)
    return(bin_code)

bin_code=[]
code=['a','A','B','b','c','c','D','d']
print(len(code))

При работе выдает: [1, 1, 1, 1, 1, 1, 1, 1]

Хотя по логике должно быть быть [0,1,1,0,0,0,1,0]. Помогите пожалуйста, что я делаю не так? p.s. Я новичок в программировании


Ответы (1 шт):

Автор решения: Zhihar

ваш код должен быть таким:

def code_into_bin(code):
    return list(map(lambda letter: 1 if letter.isupper() else 0, code))

а ваша ошибка в том, что isupper надо вызывать как метод (функцию), т.е. со скобками - isupper()

P.S.

кстати код можно сделать еще чуть покороче

def code_into_bin(code):
    return list(map(lambda letter: int(letter.isupper()), code))
→ Ссылка