Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why does my code print "built-in method" and some hex numbers?

Here is my Key function:

def Key(message, decision):
    key = input("Input the key which will be used to encode the message.\n".lower)
    n = 0
    for i in range(len(key)):
        if 64 < ord(key[n]) < 91:
            raise ValueError(key[n], "is a capital letter!")
        else:
            n = n+1
    Keycode(decision, message, key)

When I call it and input the message and press enter it comes up with:

built-in method lower of str object at 0x0150E0D0

What's wrong? How can I fix it?

like image 700
Pezbone Avatar asked Feb 10 '16 17:02

Pezbone


4 Answers

After .upper or .lower there has to be a closed pair of parentheses. You can put custom arguments in them but if you just want to capitalize the input leave them empty.

Example:

user=(input("Enter a letter:")).upper()

This will change case to upper.

like image 121
TheTRCG Avatar answered Oct 08 '22 11:10

TheTRCG


You need to use closed pair of parenthesis after lower

key = input("Input the key which will be used to encode the message.\n".lower())
like image 25
Aishwarya kabadi Avatar answered Oct 08 '22 11:10

Aishwarya kabadi


Key contains this problematic line:

key = input("Now, input the key which will be used to encode the message.\n".lower)

which passes as input to input the lower method of a string, when you (presumably) want to pass the string and then apply lower to what input returns.

like image 41
Scott Hunter Avatar answered Oct 08 '22 10:10

Scott Hunter


key = input("Input the key which will be used to encode the message.\n".lower)

Because lower function is missing parenthesis, put parenthesis after function call. so syntax would be like key = input("Input the key which will be used to encode the message.\n".lower())

like image 24
muhammad shahan Avatar answered Oct 08 '22 11:10

muhammad shahan