Generating username using python
Question:
I am attending a beginner course and I am very new to programming. I need to know of a function which generates a username using the first letter of someone’s name, the first three letters of a person’s surname and a 3 digit number without spaces.
So far I have this:
full_name = input("Please enter your name: ")
first_letter = full_name[0]
space_index = full_name.find(" ")
three_letters_surname = full_name[space_index + 1:space_index + 4]
number = random.randrange (1,999)
username = (first_letter, three_letters_surname, number)
print = (username)
The output I get is from using a name like John Wayne is:
"J", "Way", 14
What I want to know is how to change my code so I get something like:
jway014
Answers:
Try this
import random
import sys
names = input("Please enter your name: ").split(" ")
if not (len(names) > 1):
print("Please input your full and last name.")
sys.exit()
first_letter = names[0][0]
three_letters_surname = names[-1][:3]
number = '{:03d}'.format(random.randrange(1, 999))
username = (first_letter + three_letters_surname + number)
print(username)
What about this:
import random
full_name = input("Please enter your name: ")
names = full_name.split(" ")
if (len(names) <= 1):
print("Please input your full name")
exit()
first_letter = names[0][0]
three_letters_surname = names[1][0:3]
number = '{:03d}'.format(random.randrange (1,999))
username = "".join([first_letter, three_letters_surname, str(number)])
print(username)
You might be better off using split()
to break the user’s name into parts and then extracting from there. This will let you check that the user has entered at least a two word name, and you can also handle the case that someone enters one or more middle names or initials:
full_name = input("Please enter your name: ").lower().split()
if len(full_name) > 1:
first_letter = full_name[0][0]
three_letters_surname = full_name[-1][:3].rjust(3, 'x')
number = '{:03d}'.format(random.randrange (1,999))
username = '{}{}{}'.format(first_letter, three_letters_surname, number)
print(username)
else:
print('Error. Please enter first name and surname')
# try again...
Should a surname be less than 2 characters long (not uncommon), the name is left padded with x
characters.
Some examples:
Input Output
John Wayne jway014
J J Cool jcoo777
L Ron Hubbard lron666
Bob Lo bxlo001
Replace this line:
username = (first_letter, three_letters_surname, number)
With this:
username = '{}{}{:03d}'.format(first_letter.lower(),
three_letters_surname.lower(),
number)
import random
import sys
names = input("Mobin: ").split(" ")
if not (len(names) > 1):
print("Pour Nowrouz .")
sys.exit()
first_letter = names[m][0]
three_letters_surname = names[our][:3]
number = 7'{:03d}'.format(random.randrange(1, 999))
username = (first_letter + three_letters_surname + number)
print(username)
I am attending a beginner course and I am very new to programming. I need to know of a function which generates a username using the first letter of someone’s name, the first three letters of a person’s surname and a 3 digit number without spaces.
So far I have this:
full_name = input("Please enter your name: ")
first_letter = full_name[0]
space_index = full_name.find(" ")
three_letters_surname = full_name[space_index + 1:space_index + 4]
number = random.randrange (1,999)
username = (first_letter, three_letters_surname, number)
print = (username)
The output I get is from using a name like John Wayne is:
"J", "Way", 14
What I want to know is how to change my code so I get something like:
jway014
Try this
import random
import sys
names = input("Please enter your name: ").split(" ")
if not (len(names) > 1):
print("Please input your full and last name.")
sys.exit()
first_letter = names[0][0]
three_letters_surname = names[-1][:3]
number = '{:03d}'.format(random.randrange(1, 999))
username = (first_letter + three_letters_surname + number)
print(username)
What about this:
import random
full_name = input("Please enter your name: ")
names = full_name.split(" ")
if (len(names) <= 1):
print("Please input your full name")
exit()
first_letter = names[0][0]
three_letters_surname = names[1][0:3]
number = '{:03d}'.format(random.randrange (1,999))
username = "".join([first_letter, three_letters_surname, str(number)])
print(username)
You might be better off using split()
to break the user’s name into parts and then extracting from there. This will let you check that the user has entered at least a two word name, and you can also handle the case that someone enters one or more middle names or initials:
full_name = input("Please enter your name: ").lower().split()
if len(full_name) > 1:
first_letter = full_name[0][0]
three_letters_surname = full_name[-1][:3].rjust(3, 'x')
number = '{:03d}'.format(random.randrange (1,999))
username = '{}{}{}'.format(first_letter, three_letters_surname, number)
print(username)
else:
print('Error. Please enter first name and surname')
# try again...
Should a surname be less than 2 characters long (not uncommon), the name is left padded with x
characters.
Some examples:
Input Output John Wayne jway014 J J Cool jcoo777 L Ron Hubbard lron666 Bob Lo bxlo001
Replace this line:
username = (first_letter, three_letters_surname, number)
With this:
username = '{}{}{:03d}'.format(first_letter.lower(),
three_letters_surname.lower(),
number)
import random
import sys
names = input("Mobin: ").split(" ")
if not (len(names) > 1):
print("Pour Nowrouz .")
sys.exit()
first_letter = names[m][0]
three_letters_surname = names[our][:3]
number = 7'{:03d}'.format(random.randrange(1, 999))
username = (first_letter + three_letters_surname + number)
print(username)