Python Forum
Function not returning correct value
Thread Rating:
  • 2 Vote(s) - 4.5 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Function not returning correct value
#1
So I am an absolute beginner.
And I can't unserstand why a=letter_value(message) makes a a zero.
def letter_value(letter):
letter=str(letter)
l_value=0
if letter == "A" or letter=="a":
l_value=0
elif letter=="B" or letter=="b":
l_value=1
elif letter=="C" or letter=="c":
l_value=2
elif letter=="D" or letter=="d":
l_value=3
elif letter=="E" or letter=="e":
l_value=4
elif letter=="F" or letter=="f":
l_value=5
elif letter=="G" or letter=="g":
l_value=6
elif letter=="H" or letter=="h":
l_value=7
elif letter=="I" or letter=="i":
l_value=8
elif letter=="J" or letter=="j":
l_value=9
elif letter=="K" or letter=="k":
l_value=10

return l_value

while 0!=1:
message=input("Enter message")
a=0
a = letter_value(message)
print(letter_value(message))
print(a)
Reply
#2
Please use the https://python-forum.io/misc.php?action=help&hid=25 when posting code. The code tag doesn't work here.

The code looks fine. What is your input value?

Here's a quick rewrite of your code with a few small changes.

def letter_value(letter):
    letter = letter.lower()
    
    if letter == "a":
        l_value = 0
    elif letter == "b":
        l_value = 1
    elif letter == "c":
        l_value = 2
    elif letter == "d":
        l_value = 3
    elif letter == "e":
        l_value = 4
    elif letter == "f":
        l_value = 5
    elif letter == "g":
        l_value = 6
    elif letter == "h":
        l_value = 7
    elif letter == "i":
        l_value = 8
    elif letter == "j":
        l_value = 9
    elif letter == "k":
        l_value = 10
    else: l_value = -1

return l_value

while True:
    message = input("Enter message")
    a = letter_value(message)
    print(letter_value(message))
    print(a)
Reply
#3
The power of Python programming language is that
you can rewrite the function above in two lines of code:

def letter_value(letter):
    return {v: i for i, v in enumerate('abcdefghijk')}.get(letter.lower(), -1)
Reply
#4
Or, in this case:

def letter_value(letter):
    return "abcdefghijklmnopqrstuvwxyz".index(letter)
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Why my function is returning None? PauloDAS 6 1,748 Jul-17-2022, 11:17 PM
Last Post: Skaperen
  The formula in the function is not giving the correct value quest 1 1,237 Mar-30-2022, 03:20 AM
Last Post: quest
  Pausing and returning to function? wallgraffiti 1 2,152 Apr-29-2021, 05:30 PM
Last Post: bowlofred
  Why is the function returning None for a * b instead of number? omm 10 4,283 Nov-05-2020, 01:17 PM
Last Post: omm
  str.find() not returning correct index. DreamingInsanity 10 4,200 Aug-18-2020, 05:41 PM
Last Post: DreamingInsanity
  Having hard time understanding the function self-returning itself twice jagasrik 2 2,476 Aug-15-2020, 08:50 PM
Last Post: deanhystad
  Returning Value from Function with Trackbars vicpylon 3 2,048 May-24-2020, 11:28 PM
Last Post: bowlofred
  Nested Recursive Function not Returning Etotheitau 2 2,249 May-09-2020, 06:09 PM
Last Post: Etotheitau
  Getting the error like function not defined .. suggest correct code raghava 1 2,045 Feb-04-2020, 11:20 PM
Last Post: micseydel
  Not quite getting the correct Output from a function twinpiques 3 2,652 Aug-04-2019, 11:53 PM
Last Post: twinpiques

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020