
напишите любое число от 1 до 1000 введеное пользователем русскими буквами например 2-два,150-сто
пятьдесят python

Ответы на вопрос

nums = {
"один":1, "два":2, "три":3, "четыре":4, "пять":5, "шесть":6, "семь":7, "восемь":8, "девять":9, "десять":10, "одиннадцать":11, "двенадцать":12, "тринадцать":13, "четырнадцать":14, "пятнадцать":15, "шестнадцать":16, "семнадцать":17, "восемнадцать":18, "девятнадцать":19, "двадцать":20, "тридцать":30, "сорок":40, "пятьдесят":50, "шестьдесят":60, "семьдесят":70, "восемьднсят":80, "девяносто":90, "сто":100, "двести":200, "триста":300, "четыреста":400, "пятьсот":500, "шестьсот": 600, "семьсот":700, "восемьсот":800, "девятьсот":900
}
text = input()
result = 0
list = text.split()
for i in list:
result += nums[i]
print(result)



class WordConstructor:
def __init__(self, number):
self.number = number
def vocab(self, number, args=None):
if number == 1:
return "Один"
elif number == 0:
return "Ноль"
elif number == 2 and args:
return "Две"
elif number == 2:
return "Два"
elif number == 3:
return "Три"
elif number == 4 and args:
return "Четыр"
elif number == 4:
return "Четыре"
elif number == 5:
return "Пять"
elif number == 6:
return "Шесть"
elif number == 7:
return "Семь"
elif number == 8:
return "Восемь"
elif number == 9:
return "Девять"
elif number == 10:
return "Десять"
elif number == 11:
return "Одиннадцать"
elif number == 12:
return "Двенадцать"
elif number == 'suf.nadcat':
return "надцать"
elif number == 'suf.dcat':
return "дцать"
elif number == "suf.yat":
return "десят"
elif number == "suf.ok":
return "ок"
elif number == 90:
return "Девяносто"
elif number == 100:
return "Сто"
elif number == 'suf.sot':
return "сот"
def get_num_from_number(self, number, pos):
return int(str(number)[pos])
def construct(self):
if self.number < 13:
print(self.vocab(self.number))
elif self.number < 20:
if self.number == 14:
print(self.vocab(int(str(self.number)[1]), args=True) + self.vocab("suf.nadcat"))
else:
print(self.vocab(int(str(self.number)[1]), args=True).replace("ь", "") + self.vocab("suf.nadcat"))
elif self.number < 100:
first = self.get_num_from_number(self.number, 0)
second = self.get_num_from_number(self.number, 1)
if second == 0:
if first == 4:
print("Сор" + self.vocab("suf.ok"))
elif first < 5:
print(self.vocab(first, args=True) + self.vocab("suf.dcat"))
elif first < 9:
print(self.vocab(first) + self.vocab("suf.yat"))
elif first == 9:
print(self.vocab(self.number))
else:
print(self.vocab(first, args=True) + self.vocab("suf.dcat"))
else:
if first == 4:
print("Сор" + self.vocab("suf.ok") + " " + self.vocab(second).lower())
elif first < 5:
print(self.vocab(first, args=True) + self.vocab("suf.dcat") + " " + self.vocab(second).lower())
elif first < 9:
print(self.vocab(first) + self.vocab("suf.yat") + " " + self.vocab(second).lower())
elif first == 9:
print(self.vocab(self.number - second) + " " + self.vocab(second).lower())
else:
print(self.vocab(first, args=True) + self.vocab("suf.dcat") + " " + self.vocab(second).lower())
elif self.number < 1000:
zero = self.get_num_from_number(self.number, 0)
first = self.get_num_from_number(self.number, 1)
second = self.get_num_from_number(self.number, 2)
if second == 0 and first == 0:
if zero == 4:
print(self.vocab(zero) + self.vocab(100).lower())
elif zero == 2:
print("Двести")
elif zero == 3:
print(self.vocab(zero) + self.vocab(100).lower().replace("о", "а"))
elif zero == 1:
print(self.vocab(100))
elif zero <= 9:
print(self.vocab(zero) + self.vocab('suf.sot').lower())
for i in range(0, 1000):
a = WordConstructor(i)
a.construct()
Код очень нетривиален и не оптимизорован. Работает с 0-100 числами и может еще 200, 300...
Дальше с >100 писать мне очень лень, уж простите.



К сожалению, я не программирована для распознавания русских числительных и их преобразования в числа. Однако, я могу помочь вам с написанием программы на языке Python, которая будет выполнять данную задачу. Вот пример кода:
pythondef convert_to_number(number_word):
numbers = {
'один': 1, 'два': 2, 'три': 3, 'четыре': 4, 'пять': 5, 'шесть': 6, 'семь': 7, 'восемь': 8, 'девять': 9,
'десять': 10, 'одиннадцать': 11, 'двенадцать': 12, 'тринадцать': 13, 'четырнадцать': 14, 'пятнадцать': 15,
'шестнадцать': 16, 'семнадцать': 17, 'восемнадцать': 18, 'девятнадцать': 19, 'двадцать': 20, 'тридцать': 30,
'сорок': 40, 'пятьдесят': 50, 'шестьдесят': 60, 'семьдесят': 70, 'восемьдесят': 80, 'девяносто': 90,
'сто': 100, 'двести': 200, 'триста': 300, 'четыреста': 400, 'пятьсот': 500, 'шестьсот': 600, 'семьсот': 700,
'восемьсот': 800, 'девятьсот': 900
}
words = number_word.split()
number = 0
for word in words:
if word in numbers:
number += numbers[word]
return number
user_input = input("Введите число словами (от один до тысячи): ")
number = convert_to_number(user_input)
print(f"Число: {number}")
Этот код позволяет пользователю ввести число словами на русском языке (например, "сто пятьдесят") и выводит соответствующее числовое значение (в данном случае, 150).


Похожие вопросы
Топ вопросов за вчера в категории Информатика









Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili