user17723785
user17723785

Reputation:

I have to make a code taking a name and turning it into a last name, first initial and middle initial format

I have to make a code taking a name and turning it into a last name, first initial, middle initial format. My code works assuming there is a middle name but breaks if not provided a middle name. Is there a way to ignore not having a middle name and to just default to last name and first initial? I'm super new to python3 so I'm sorry if my code is uber bad. Heres my code :

your_name = input()
broken_name = your_name.split()
first_name = broken_name[0]
middle_name = broken_name[1]
last_name = broken_name[2]

middle_in = middle_name[0]
first_in = first_name[0]
print(last_name+',',first_in+'.'+middle_in+'.' )

Upvotes: 2

Views: 1183

Answers (2)

tal.tzf
tal.tzf

Reputation: 128

Another option:

def get_pretty_name_str(names):
  splited_names = names.split()
  last_name = splited_names.pop(-1)
  result = f'{last_name},'
  while splited_names:
    n = splited_names.pop(0)
    result += f'{n}.'
  return result

print(get_pretty_name_str('First Middle Last'))  # Last,First.Middle.
print(get_pretty_name_str('First Last'))  # Last,First.

Upvotes: 1

novice_python
novice_python

Reputation: 56

You can use an if else statement to check how long broken_name is. Try:

your_name = input()
broken_name = your_name.split()
if len(broken_name) > 2:
    first_name = broken_name[0]
    middle_name = broken_name[1]
    last_name = broken_name[2]

    middle_in = middle_name[0]
    first_in = first_name[0]
    print(last_name+', ',first_in+'. '+middle_in+'.'
else:
    first_name = broken_name[0]
    last_name = broken_name[1]
    first_in = first_name[0]
    print(last_name+', ',first_in+'.')

Upvotes: 1

Related Questions