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

Задача, найти сумму числе записанных буквами

Иван Коновалов Ученик (100), открыт 12 часов назад
Ввод - 2 числа записанные буквами от 1 до 10, и знак между ними, + или -
Нужно найти сумму чисел и вывести результат словами, при этом всё на английском
Дополнен 12 часов назад
Числа разделены пробелом, они находятся в одной строке
Дополнен 12 часов назад
Знак + или - так же в этой строке, отделён пробелом
1 ответ
Адис Садовничий Мыслитель (7591) 10 часов назад
 def words_to_numbers(word): 
"""Преобразует числа, записанные словами, в их числовое представление."""
numbers = {
"one": 1,
"two": 2,
"three": 3,
"four": 4,
"five": 5,
"six": 6,
"seven": 7,
"eight": 8,
"nine": 9,
"ten": 10
}
return numbers.get(word.lower(), None)

def numbers_to_words(number):
"""Преобразует числовое представление в числа, записанные словами."""
numbers = {
1: "one",
2: "two",
3: "three",
4: "four",
5: "five",
6: "six",
7: "seven",
8: "eight",
9: "nine",
10: "ten",
0: "zero"
}
return numbers.get(number, None)

def calculate_expression(expression):
"""Вычисляет выражение в текстовом формате и возвращает результат словами."""
parts = expression.split()

if len(parts) != 3:
raise ValueError("Input should contain two numbers and an operator separated by spaces.")

# Разбираем числа и оператор
first_number = words_to_numbers(parts[0])
operator = parts[1]
second_number = words_to_numbers(parts[2])

if first_number is None or second_number is None:
raise ValueError("Invalid number word in the input.")

if operator not in ["+", "-"]:
raise ValueError("Operator should be '+' or '-'.")

# Вычисляем результат
if operator == "+":
result = first_number + second_number
elif operator == "-":
result = first_number - second_number

# Преобразуем результат в слова
result_word = numbers_to_words(result)
if result_word is None:
raise ValueError("Result is out of bounds (valid range: 0 to 10).")

return result_word

# Пример использования
input_expression = "three + five"
result = calculate_expression(input_expression)
print(result) # Вывод: eight
Похожие вопросы