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
Asked By: R. Mercy

||

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)
Answered By: Bernardo Meurer

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)
Answered By: K. Menyah

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
Answered By: mhawke

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)
Answered By: Mobin Pour Nowrouz
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.