Reputation:
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
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
Reputation: 154
You're not using the return value of get_name()
def generate_username(number, number_length):
name = get_name()
Upvotes: 1