从文本Fi创建用户名

2024-04-18 15:50:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我只知道我对这件事很没良心,所以请你容忍我。已经尽力了!在

从具有名字和姓氏的文本文件中读取行(有些带有中间名),以生成一个用户名,该用户名是forename和任何中间名的联合版本。如果有重复的,我们从他们的姓氏中提取第一个字母。如果仍然重复,我们后缀1,并从那里开始计算更多的重复-我只是不能让这部分工作!在

usernames = []

for line in open('classlist.txt'):
  count = 0
  name = line.lower().split()
  surname = name[-1]
  username = ''.join(name[0:-1])
  username_w_surname = username + surname[0]
  username_w_surname_integer = username_w_surname + str(count)
  if username not in usernames:
    usernames.append(username)
  elif username in usernames:
    usernames.append(username_w_surname)
  elif username_w_surname in usernames:
    count = count + 1
    usernames.append(username_w_surname_integer)

for entry in usernames:
  print (entry)

它正在回归

^{2}$

但是第二个jamesp应该是jamesp1


Tags: nameinforcountlineusernameintegersurname
2条回答

你也可以试试这个

usernames = []
for line in open('classlist.txt'):
  count = 1
  name = line.lower().split()
  surname = name[-1]
  username = ''.join(name[0:-1])
  username_w_surname = username + surname[0]
  username_w_surname_integer = username_w_surname + str(count)
  if username not in usernames:
        usernames.append(username)
  elif username in usernames:            
        if username_w_surname in usernames:
                    count = count + 1
                    usernames.append(username_w_surname_integer)
        else:
            usernames.append(username_w_surname)
for entry in usernames:
  print (entry)

你的前两个条款:

if username not in usernames:
    usernames.append(username)
elif username in usernames:
    usernames.append(username_w_surname)

涵盖所有可能性,因为username要么在usernames中,要么不在。因此,您永远不会进入第三个区块:

^{pr2}$

这样可以解决问题:

  if username not in usernames:
    usernames.append(username)
  elif username_w_surname not in usernames:
    usernames.append(username_w_surname)
  else:
    count = count + 1
    usernames.append(username_w_surname_integer)

最后还有一个优化提示:与其使用列表来收集用户名,不如看看sets。在

相关问题 更多 >