Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Подсчитать алфавитные значения и умножить значение на номер имени

Fantom Профи (637), на голосовании 1 неделю назад
Дан текстовый файл, который содержит более пяти тысяч имён.

Задача:

Отсортировать все имена в алфавитном порядке
Подсчитать алфавитные значения каждого имени
Умножить значение на порядковый номер имени в отсортированном списке
Пример: при условии, что список отсортирован по алфавиту, имя COLIN (алфавитное значение которого 3 + 15 + 12 + 9 + 14 = 53) является 938-м в списке. Поэтому имя COLIN получает 49714 очков (53 * 938).
Я написал код:
 def alphabet_score(word): 
a=" abcdefghijklmnopqrstuvwxyz".upper()
res=0
for w in word:
if w in a:
res=a.find(w)+res
return(res)
f = open('names.txt',mode="r")
txt=f.read().split(",")
f.close()
Отсортировать имена:сделано
 txt.sort() 
Осталось дополнить код чтобы он подсчитал алфавитные значения и умножил их на номер имени. Переделывать код нельзя(полностью заменять его),можно только добавить.
Голосование за лучший ответ
** Эгоист ** Знаток (483) 1 месяц назад
Чтобы дополнить ваш код, нужно сначала подсчитать алфавитные значения для каждого имени, а затем умножить это значение на его порядковый номер в отсортированном списке. Давайте добавим необходимый функционал:

def alphabet_score(word):
a = " abcdefghijklmnopqrstuvwxyz".upper()
res = 0
for w in word:
if w in a:
res += a.find(w) # Убираем +res, так как это лишнее
return res

f = open('names.txt', mode="r")
txt = f.read ().split(",")
f.close()

# Сортируем имена
txt.sort()

# Создаем список для хранения результатов
results = []

# Подсчитываем очки для каждого имени
for index, name in enumerate(txt):
score = alphabet_score(name) * (index + 1) # index + 1, чтобы начинать с 1
results.append((name, score)) # Сохраняем имя и его очки

# Если нужно, можно вывести результаты
for name, score in results:
print(f"Имя: {name}, Очки: {score}")


Что добавлено:
Перебор имен с использованием enumerate: Это позволяет получить индекс имени в отсортированном списке.
Подсчет очков: Для каждого имени мы вычисляем его алфавитное значение и умножаем на его порядковый номер.
Сохранение результатов: Результаты сохраняются в список results, который содержит кортежи с именами и их очками.
Теперь ваш код будет правильно подсчитывать и выводить очки для каждого имени! Если потребуется дополнительная помощь, дайте знать!
Похожие вопросы