У меня есть текстовый файл studentlist.txt, который выглядит следующим образом:
studentlist.txt
Sam Vimes
Sam Flynn
Sam Gamgee
Sam Carter
Sam Velo
Sam Victory
Sam Vega
У меня есть следующая программа на Python:
usernames = []
for line in open('studentlist.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_w_surname not in usernames:
usernames.append(username_w_surname)
else:
count = count + 1
usernames.append(username_w_surname_integer)
for entry in usernames:
print (entry)
Какие выходы:
sam
samf
samg
samc
samv
samv1
samv1
, когда он должен был вывести следующее:
sam
samf
samg
samc
samv
samv1
samv2
Выводит samv1 вместо samv2
Я просто не уверен, как можно изменить этот код, чтобы он работал так, как задумано.
При каких условиях следует увеличивать счет? При каких условиях следует сбросить счетчик?
Поместите строку
count=1
вне цикла for (т.е. перед ним) Ваш код сбрасывает счетчик на 1 для каждой строки. Размещениеcount=1
вне цикла for фактически позволит увеличить счетчик@SruthiV, это сработало отлично, большое спасибо.