使用python生成用户名

新手上路,请多包涵

我正在参加初学者课程,我对编程很陌生。我需要知道一个函数,它使用某人姓名的第一个字母、一个人姓氏的前三个字母和一个不带空格的 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

原文由 R. Mercy 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 416
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)

原文由 Bernardo Meurer 发布,翻译遵循 CC BY-SA 3.0 许可协议

您最好使用 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 字符。

一些例子:

输入输出
约翰·韦恩 jway014
JJ酷jcoo777
L 罗恩哈伯德 lron666
鲍勃罗 bxlo001

原文由 mhawke 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题