Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+4

Помогите решить задачку на питоне !

В настольной игре Скрабл (Scrabble) каждая буква имеет определенную ценность. В случае с английским алфавитом очки распределяются так: - A, E, I, O, U, L, N, S, T, R – 1 очко; - D, G – 2 очка; - B, C, M, P – 3 очка; - F, H, V, W, Y – 4 очка; - K – 5 очков; - J, X – 8 очков; - Q, Z – 10 очков. А русские буквы оцениваются так: - А, В, Е, И, Н, О, Р, С, Т – 1 очко; - Д, К, Л, М, П, У – 2 очка; - Б, Г, Ё, Ь, Я – 3 очка; - Й, Ы – 4 очка; - Ж, З, Х, Ц, Ч – 5 очков; - Ш, Э, Ю – 8 очков; - Ф, Щ, Ъ – 10 очков. Напишите программу, которая вычисляет стоимость введенного пользователем слова. Будем считать, что на вход подается только одно слово, которое содержит либо только английские, либо только русские буквы. Пример ввода: ноутбук Пример вывода: 12 Необходимо реализовать данное задание из нескольких функций записанных в один модуль. Все результаты должны записываться в отдельный файл. Результаты представить в ввиде модуля в формате .py и 2 строчки кода его подключения, использование.

По дате
По рейтингу
Аватар пользователя
Просветленный
12345678910111213141516171819202122232425262728293031323334353637383940
 # scrabble_score.py 
 
def get_english_score(word): 
    scores = { 
        1: set('AEIOULNSTR'), 
        2: set('DG'), 
        3: set('BCMP'), 
        4: set('FHVWY'), 
        5: set('K'), 
        8: set('JX'), 
        10: set('QZ') 
    } 
    return sum(next(score for score, letters in scores.items() if letter.upper() in letters) for letter in word) 
 
def get_russian_score(word): 
    scores = { 
        1: set('АВЕИНОРСТ'), 
        2: set('ДКЛМПУ'), 
        3: set('БГЁЬЯ'), 
        4: set('ЙЫ'), 
        5: set('ЖЗХЦЧ'), 
        8: set('ШЭЮ'), 
        10: set('ФЩЪ') 
    } 
    return sum(next(score for score, letters in scores.items() if letter.upper() in letters) for letter in word) 
 
def calculate_score(word): 
    if all(ord('A') <= ord(c.upper()) <= ord('Z') for c in word): 
        return get_english_score(word) 
    else: 
        return get_russian_score(word) 
 
def save_result(word, score): 
    with open('scrabble_results.txt', 'a', encoding='utf-8') as f: 
        f.write(f"Слово: {word}, Очки: {score}\n") 
 
def process_word(word): 
    score = calculate_score(word) 
    save_result(word, score) 
    return score 

Теперь, чтобы использовать этот модуль, вы можете создать основной файл, например main.py, и добавить следующий код:

123456
 # main.py 
from scrabble_score import process_word 
 
word = input("Введите слово: ") 
score = process_word(word) 
print(f"Стоимость слова '{word}': {score} очков")