user15404163
user15404163

Reputation:

Python NameError: name 'name' is not defined functions

I'm making this program that prompts the user to enter their name and from there generate a username for them, like so:

Please enter your name: Stack Overflow
Your username is sove001

This is my code so far:

def get_name():
    name = str(input("Please enter your name: "))
    return name

def process_name(name):
    first_letter = name[0]
    first_space = name.find(" ")
    three_surname = name[first_space+1:first_space+4]
    nick_name = first_letter + three_surname
    final_name = nick_name.lower()
    return final_name

def zero_extend_number(number, length):
    number_str = str(number)
    padded_number = number_str.rjust(length, '0')
    return padded_number


def generate_username(number, number_length):
    get_name()
    process_name(name)
    zero_extend_number(number, length)
    completed_name = final_name + padded_number
    print("Your username is: {}".format(completed_name))

generate_username(1,4)

Running this gives the following ouput:

NameError: name 'name' is not defined

I'm not really sure what is wrong with my code, have I missed something?

Upvotes: 1

Views: 729

Answers (2)

Hetal Thaker
Hetal Thaker

Reputation: 717

From every function you are returning value so output that it returns needs to be collected in some variable. I have modified code for generate_username() as below, try it:

def generate_username(number, number_length):
    name = get_name()
    final_name = process_name(name)
    padded_number = zero_extend_number(number, number_length)
    completed_name = final_name + padded_number
    print("Your username is: {}".format(completed_name))

Upvotes: 0

jsfehler
jsfehler

Reputation: 154

You're not using the return value of get_name()

def generate_username(number, number_length):
    name = get_name()

Upvotes: 1

Related Questions