Условие:
Используйте names.txt (правый клик и 'Save Link/Target As...'), текстовый файл размером 46 КБ, содержащий более пяти тысяч имён. Начните с сортировки в алфавитном порядке. Затем подсчитайте алфавитные значения каждого имени и умножьте это значение на порядковый номер имени в отсортированном списке для получения количества очков имени.
Решение
Повторяюсь - я не очень люблю "лингвистические" задачи, но эту постараюсь решить.
Для начала определим словарь с "очками" за буквы алфавита:
alp={'A':1,'B':2,'C':3,'D':4,'E':5,'F':6,'G':7,'H':8,'I':9,'J':10,'K':11,'L':12,'M':13,'N':14,'O':15,'P':16,'Q':17,'R':18,'S':19,'T':20,'U':21,'V':22,'W':23,'X':24,'Y':25,'Z':26}
Далее функция, возвращающая список имен в приемлемом для анализа виде:
def get_names():
parts=[]
f = open('c:\\exp\\names.txt')
line = f.readline()
tmp=line.split(',')
for i in tmp:
b=i.strip('"')
parts.append(b)
parts.sort()
return parts
Прошу обратить внимание на цикл For - после того как я разбил строку функцией split в списке tmp слова заключенные в кавычки. В цикле функцией strip я для каждого элемента списка tmp избавляюсь от кавычек.
Ну и наконец считаем сумму очков:
def get_scores(lst):
su=0
c=1
for i in lst:
coin=0
for j in i:
coin+=alp[j]
su+=coin*c
c+=1
return su
lst=get_names()
print(get_scores(lst))
Используйте names.txt (правый клик и 'Save Link/Target As...'), текстовый файл размером 46 КБ, содержащий более пяти тысяч имён. Начните с сортировки в алфавитном порядке. Затем подсчитайте алфавитные значения каждого имени и умножьте это значение на порядковый номер имени в отсортированном списке для получения количества очков имени.
Например, если список отсортирован по алфавиту, имя COLIN (алфавитное значение которого 3 + 15 + 12 + 9 + 14 = 53) является 938-ым в списке. Поэтому, имя COLIN получает 938 × 53 = 49714 очков.
Какова сумма очков имён в файле?
Решение
Повторяюсь - я не очень люблю "лингвистические" задачи, но эту постараюсь решить.
Для начала определим словарь с "очками" за буквы алфавита:
alp={'A':1,'B':2,'C':3,'D':4,'E':5,'F':6,'G':7,'H':8,'I':9,'J':10,'K':11,'L':12,'M':13,'N':14,'O':15,'P':16,'Q':17,'R':18,'S':19,'T':20,'U':21,'V':22,'W':23,'X':24,'Y':25,'Z':26}
Далее функция, возвращающая список имен в приемлемом для анализа виде:
def get_names():
parts=[]
f = open('c:\\exp\\names.txt')
line = f.readline()
tmp=line.split(',')
for i in tmp:
b=i.strip('"')
parts.append(b)
parts.sort()
return parts
Прошу обратить внимание на цикл For - после того как я разбил строку функцией split в списке tmp слова заключенные в кавычки. В цикле функцией strip я для каждого элемента списка tmp избавляюсь от кавычек.
Ну и наконец считаем сумму очков:
def get_scores(lst):
su=0
c=1
for i in lst:
coin=0
for j in i:
coin+=alp[j]
su+=coin*c
c+=1
return su
lst=get_names()
print(get_scores(lst))