Чтобы дополнить ваш код, нужно сначала подсчитать алфавитные значения для каждого имени, а затем умножить это значение на его порядковый номер в отсортированном списке. Давайте добавим необходимый функционал:
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, который содержит кортежи с именами и их очками.
Теперь ваш код будет правильно подсчитывать и выводить очки для каждого имени! Если потребуется дополнительная помощь, дайте знать!
Задача:
Отсортировать все имена в алфавитном порядке
Подсчитать алфавитные значения каждого имени
Умножить значение на порядковый номер имени в отсортированном списке
Пример: при условии, что список отсортирован по алфавиту, имя COLIN (алфавитное значение которого 3 + 15 + 12 + 9 + 14 = 53) является 938-м в списке. Поэтому имя COLIN получает 49714 очков (53 * 938).
Я написал код: Отсортировать имена:сделано Осталось дополнить код чтобы он подсчитал алфавитные значения и умножил их на номер имени. Переделывать код нельзя(полностью заменять его),можно только добавить.