使用python生成用户名

问题描述 投票:2回答:4

我正在参加初级课程,我对编程非常陌生。我需要知道一个函数,它使用某人姓名的第一个字母,一个人姓氏的前三个字母和一个没有空格的3位数字来生成用户名。到目前为止我有这个:

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)

我得到的输出是使用John Wayne这样的名字:

"J", "Way", 14

我想知道的是如何更改我的代码,所以我得到类似的东西:

jway014
python python-3.x
4个回答
2
投票

试试这个

 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)

5
投票

你可能最好使用split()将用户的名字分成几部分,然后从中提取。这将让您检查用户是否输入了至少两个单词的名称,您还可以处理某人输入一个或多个中间名或姓名缩写的情况:

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...

如果姓氏长度少于2个字符(并非罕见),则该名称将填充x字符。

一些例子:

Input            Output
John Wayne       jway014
J J Cool         jcoo777
L Ron Hubbard    lron666
Bob Lo           bxlo001

0
投票

替换此行:

username = (first_letter, three_letters_surname, number)

有了这个:

username = '{}{}{:03d}'.format(first_letter.lower(),
                               three_letters_surname.lower(),
                               number)

0
投票

那这个呢:

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)
© www.soinside.com 2019 - 2024. All rights reserved.