为什么运行出来是这个样子?


def capital(message):
    if message[0] >= 'a' or message[0] <= 'z':
        return message[0].upper
    for i in message:
        if message[i - 1] in [".", "!", "?"] and message[i] != "":
            return message[i].upper
        elif message[i] == "i" and (message[i - 1] == " " or message[i + 1] in [" ", ".", "!", "?", "/"]):
            return message[i].upper
    return message


def main():
    print(capital("you love you,i love you!mixuebingcheng tian/mimi"))
main()

结果:
<built-in method upper of str object at 0x7f96e6bafc70>

Process finished with exit code 0

目的是要把字符串里符合条件的字母大写,但是为什么这段代码运行出来是这个结果?

你好,请问你是要实现这个效果吗

def capital(message):
    new_message = ''
    for i in range(len(message)):
        if message[i] in ['y', 'i']:
            new_message += message[i].upper()
        else:
            new_message += message[i]
    return new_message


def main():
    print(capital("you love me,i love you!mixuebingcheng tian/mimi", ))


main()

# You love me,I love You!mIxuebIngcheng tIan/mImI  

你return的是message[0].upper,upper是一个函数,所以打印的是这个函数的字符串显示,函数调用必须加括号
但你的算法好像也有问题,怎么能直接return呢