I am trying to create a ceasars cipher encoder but when I run this code:
def Numbererplussome(Letter):
if Letter.lower == "a":
Numberee = 1
Numberee = Numberee + 3
return Numberee
elif Letter.lower == "b":
Numberee = 2
Numberee = Numberee + 3
return Numberee
elif Letter.lower == "c":
Numberee = 3
Numberee = Numberee + 3
return Numberee
elif Letter.lower == "d":
Numberee = 4
Numberee = Numberee + 3
return Numberee
elif Letter.lower == "e":
Numberee = 5
Numberee = Numberee + 3
return Numberee
elif Letter.lower == "f":
Numberee = 6
Numberee = Numberee + 3
return Numberee
elif Letter.lower == "g":
Numberee = 7
Numberee = Numberee + 3
return Numberee
elif Letter.lower == "h":
Numberee = 8
Numberee = Numberee + 3
return Numberee
elif Letter.lower == "i":
Numberee = 9
Numberee = Numberee + 3
return Numberee
elif Letter.lower == "j":
Numberee = 10
Numberee = Numberee + 3
return Numberee
elif Letter.lower == "k":
Numberee = 11
Numberee = Numberee + 3
return Numberee
elif Letter.lower == "l":
Numberee = 12
Numberee = Numberee + 3
return Numberee
elif Letter.lower == "m":
Numberee = 13
Numberee = Numberee + 3
return Numberee
elif Letter.lower == "n":
Numberee = 14
Numberee = Numberee + 3
return Numberee
elif Letter.lower == "o":
Numberee = 15
Numberee = Numberee + 3
return Numberee
elif Letter.lower == "p":
Numberee = 16
Numberee = Numberee + 3
return Numberee
elif Letter.lower == "q":
Numberee = 17
Numberee = Numberee + 3
return Numberee
elif Letter.lower == "r":
Numberee = 18
Numberee = Numberee + 3
return Numberee
elif Letter.lower == "s":
Numberee = 19
Numberee = Numberee + 3
return Numberee
elif Letter.lower == "t":
Numberee = 20
Numberee = Numberee + 3
return Numberee
elif Letter.lower == "u":
Numberee = 21
Numberee = Numberee + 3
return Numberee
elif Letter.lower == "v":
Numberee = 22
Numberee = Numberee + 3
return Numberee
elif Letter.lower == "w":
Numberee = 23
Numberee = Numberee + 3
return Numberee
elif Letter.lower == "x":
int(Letter)
Letter = 24
Numberee = Numberee - 23
elif Letter.lower == "y":
Numberee = 25
Numberee = Numberee - 23
elif Letter.lower == "z":
Numberee = 26
Numberee = Numberee - 23
def UnNumberer(Numberee, NewLetterrp):
if Numberee == 1:
NewLetterrp = "a"
return NewLetterrp
elif Numberee == 2:
NewLetterrp = "b"
return NewLetterrp
elif Numberee == 3:
NewLetterrp = "c"
return NewLetterrp
elif Numberee == 4:
NewLetterrp = "d"
return NewLetterrp
elif Numberee == 5:
NewLetterrp = "e"
return NewLetterrp
elif Numberee == 6:
NewLetterrp = "f"
return NewLetterrp
elif Numberee == 7:
NewLetterrp = "g"
return NewLetterrp
elif Numberee == 8:
NewLetterrp = "h"
return NewLetterrp
elif Numberee == 9:
NewLetterrp = "i"
return NewLetterrp
elif Numberee == 10:
NewLetterrp = "j"
return NewLetterrp
elif Numberee == 11:
NewLetterrp = "k"
return NewLetterrp
elif Numberee == 12:
NewLetterrp = "l"
return NewLetterrp
elif Numberee == 13:
NewLetterrp = "m"
return NewLetterrp
elif Numberee == 14:
NewLetterrp = "n"
return NewLetterrp
elif Numberee == 15:
NewLetterrp = "o"
return NewLetterrp
elif Numberee == 16:
NewLetterrp = "p"
return NewLetterrp
elif Numberee == 17:
NewLetterrp = "q"
return NewLetterrp
elif Numberee == 18:
NewLetterrp = "r"
return NewLetterrp
elif Numberee == 19:
NewLetterrp = "s"
return NewLetterrp
elif Numberee == 20:
NewLetterrp = "t"
return NewLetterrp
elif Numberee == 21:
NewLetterrp = "u"
return NewLetterrp
elif Numberee == 22:
NewLetterrp = "v"
return NewLetterrp
elif Numberee == 23:
NewLetterrp = "w"
return NewLetterrp
elif Numberee == 24:
NewLetterrp = "x"
return NewLetterrp
elif Numberee == 25:
NewLetterrp = "y"
return NewLetterrp
elif Numberee == 26:
NewLetterrp = "z"
return NewLetterrp
print("hello this is a ceasers cipher encoder please type your message below")
cstr = input()
print("the encoded message should be:")
for letter in cstr:
print(UnNumberer(Numbererplussome(letter), ""), end="")
The output returns as NoneNone when I input "hi".
I understand why print outputs none in most scenarios but why does it happen when I am returning the variable that (should) have a value?
I tried to fix this but putting all of the functions into the print function but it didn't solve my issue.
How do I add value to my (appearently) valueless variable?
In the code you wrote:
Although the object
Letterhas a function calledlower. You need to call the function by usingLetter.lower()to get the return value, which is the lowered letter. If you just writeLetter.lower, the interpreter will think that you are referring to the function itself rather than the lowered letter. And as the function is not a string and does not match any if statements, it will return None.Updated code: