我正在尝试创建一个小型python程序,它采用名字和姓氏列表,以FirstInitial格式创建用户名。 LastName(区分相似名称的可选数字),例如P.Test16。然后,它将它们与现有用户名列表以及所有其他新生成的用户名进行比较,并通过增加最后的数字使它们都是唯一的。 然而,虽然它可以将新用户名与现有用户名进行比较,但它无法将它们与其他新用户名进行比较,例如我目前已经拥有一个用户名“j.moore”,而且我还有两个新用户,他们将拥有一个用户名j.moore ,因此在while循环中第一次运行后都有用户名“j.moore1”,但它不会在第二次运行中使第二个“j.moore2”。下面是我的代码
while len(intakearray) > 0:
nonuniqueusers = []
for row in intakearray:
if (row[2] not in usersarray) and (row[2] not in uniqueusers):
if count > 0:
print(row)
uniqueusers.append(row)
else:
nonuniqueusers.append(row)
if args.verbose >= 1:
conflicts += 1
if args.verbose == 2:
conflictingnames.append(row[2])
for row in nonuniqueusers:
newname = row[2]
if count >= 1:
newname = row[2][0:-1]
newname += str(count + 1)
row[2] = newname
intakearray = nonuniqueusers
count += 1
答案 0 :(得分:0)
如果用户是唯一的,您可以将NULL
中的完整row
存储在intakearray
中(代码清单第7行):
uniqueusers
但是,当您检查用户名是否唯一时,请检查uniqueusers.append(row)
中的用户名是否在row[2]
中(代码中的第4行):
uniqueusers
当您将第7行从if (row[2] not in usersarray) and (row[2] not in uniqueusers):
更改为uniqueusers.append(row)
时,您的代码应按预期工作。
由于您的示例未对uniqueusers.append(row[2])
的内容进行任何说明,因此您应检查在其中是否存在完整行与仅检查上述if语句中的用户名之间是否存在相同的不匹配。