С Новым годом! Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 04.03.2024
Сообщений: 8

Конвертировать слова в число

19.06.2024, 21:44. Показов 1134. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Преобразовать строку в число

Пользователь с клавиатуры (через функцию input()) вводит строку — описание числа словами на русском языке.

Напишите функцию transform_string_to_integer(), которая принимает на вход введённую пользователем строку, конвертирует слова в число и возвращает число, которое описано в строке s.

Примечания:

Минимальное число — ноль (0) включительно. Максимальное число — один миллион (1000000) включительно.

Гарантируется, что на вход подаются строки с описанием числа, проверять это не нужно.

Пример №1:

Ввод:
один

Вывод:
1
Пример №2:

Ввод:
двадцать

Вывод:
20
Пример №3:

Ввод:
двести сорок шесть

Вывод:
246
Пример №4:

Ввод:
семьсот восемьдесят три тысячи девятьсот девятнадцать

Вывод:
783919
Подсказка №1:

При решении задачи вам может пригодиться следующий словарь:

Python
1
2
3
4
5
6
number_word_dict = {
    "ты": 1000, "м": 1000000,
    "сто": 100, "двес": 200, "трис": 300, "четырес": 400, "пятьс": 500, "шестьс": 600, "семьс": 700, "восемьс": 800, "девятьс": 900,
    "одинн": 11, "двен": 12, "трин": 13, "четырн": 14, "пятн": 15, "шестн": 16, "семн": 17, "восемн": 18, "девятн": 19,
    "двад": 20, "трид": 30, "сор": 40, "пятьд": 50, "шестьд": 60, "семьд": 70, "восемьд": 80, "девяно": 90,
    "дес": 10, "н": 0, "о": 1, "дв": 2, "т": 3, "ч": 4, "п": 5, "ш": 6, "с": 7, "в": 8, "д": 9, }
Подсказка №2:

При решении задачи вам может пригодиться метод строк s.startswith(word), который определяет, начинается ли строка s со строки word. Подробнее о нём вы можете узнать в документации.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.06.2024, 21:44
Ответы с готовыми решениями:

Вывести строку, содержащее число, конвертировать его в целое число
Вывести строку, содержащее число, конвертировать его в целое число

Конвертировать строку с датой и временем в число секунд и наоборот - число секунд в дату и время
Здравствуйте. Подскажите пожалуйста есть строки типа char/string: 2015.04.30 06:30 как перевести данное время в число секунд. И...

Конвертировать RGB в число
Пытаюсь разобраться по каким правилам система конвертирует цвет в формате rgb в числовой тип и сохраняет его в базу данных! ...

4
184 / 72 / 35
Регистрация: 09.05.2022
Сообщений: 387
21.06.2024, 09:05
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
def transform_string_to_integer(s):
    units = {
        "ноль": 0, "один": 1, "два": 2, "три": 3, "четыре": 4, "пять": 5, 
        "шесть": 6, "семь": 7, "восемь": 8, "девять": 9, 
        "десять": 10, "одиннадцать": 11, "двенадцать": 12, "тринадцать": 13, 
        "четырнадцать": 14, "пятнадцать": 15, "шестнадцать": 16, 
        "семнадцать": 17, "восемнадцать": 18, "девятнадцать": 19
    }
    
    tens = {
        "двадцать": 20, "тридцать": 30, "сорок": 40, "пятьдесят": 50, 
        "шестьдесят": 60, "семьдесят": 70, "восемьдесят": 80, "девяносто": 90
    }
    
    hundreds = {
        "сто": 100, "двести": 200, "триста": 300, "четыреста": 400, 
        "пятьсот": 500, "шестьсот": 600, "семьсот": 700, "восемьсот": 800, 
        "девятьсот": 900
    }
    
    thousands = {
        "тысяча": 1000, "тысячи": 1000, "тысяч": 1000
    }
    
    large_numbers = {
        "миллион": 1000000
    }
    
    # Разбиваем строку на слова
    words = s.split()
    total = 0
    current = 0
    
    for word in words:
        if word in units:
            current += units[word]
        elif word in tens:
            current += tens[word]
        elif word in hundreds:
            current += hundreds[word]
        elif word in thousands:
            if current == 0:
                current = 1
            total += current * 1000
            current = 0
        elif word in large_numbers:
            if current == 0:
                current = 1
            total += current * 1000000
            current = 0
    
    total += current
    return total
 
#Примеры:
print(transform_string_to_integer("один"))  # 1
print(transform_string_to_integer("двадцать"))  # 20
print(transform_string_to_integer("двести сорок шесть"))  # 246
print(transform_string_to_integer("семьсот восемьдесят три тысячи девятьсот девятнадцать"))  # 783919
1
Эксперт Python
 Аватар для Red white socks
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
21.06.2024, 14:10
karlhildekruger,
Python
1
print(transform_string_to_integer("две тысячи"))
?
0
1711 / 578 / 76
Регистрация: 10.04.2009
Сообщений: 9,304
22.06.2024, 09:27
я использую import pymorphy3 # pip install pymorphy3 https://pymorphy2.readthedocs.io/en/stable/
0
184 / 72 / 35
Регистрация: 09.05.2022
Сообщений: 387
10.07.2024, 21:30
Цитата Сообщение от Red white socks Посмотреть сообщение
print(transform_string_to_integer("две тысячи"))
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
def transform_string_to_integer(s):
    units = {
        "ноль": 0, "один": 1, "одна": 1, "два": 2, "две": 2, "три": 3, "четыре": 4, "пять": 5, 
        "шесть": 6, "семь": 7, "восемь": 8, "девять": 9, 
        "десять": 10, "одиннадцать": 11, "двенадцать": 12, "тринадцать": 13, 
        "четырнадцать": 14, "пятнадцать": 15, "шестнадцать": 16, 
        "семнадцать": 17, "восемнадцать": 18, "девятнадцать": 19
    }
    
    tens = {
        "двадцать": 20, "тридцать": 30, "сорок": 40, "пятьдесят": 50, 
        "шестьдесят": 60, "семьдесят": 70, "восемьдесят": 80, "девяносто": 90
    }
    
    hundreds = {
        "сто": 100, "двести": 200, "триста": 300, "четыреста": 400, 
        "пятьсот": 500, "шестьсот": 600, "семьсот": 700, "восемьсот": 800, 
        "девятьсот": 900
    }
    
    thousands = {
        "тысяча": 1000, "тысячи": 1000, "тысяч": 1000
    }
    
    large_numbers = {
        "миллион": 1000000, "миллиона": 1000000, "миллионов": 1000000
    }
    
    # Разбиваем строку на слова
    words = s.split()
    total = 0
    current = 0
    is_negative = False
    
    for word in words:
        if word == "минус":
            is_negative = True
        elif word in units:
            current += units[word]
        elif word in tens:
            current += tens[word]
        elif word in hundreds:
            current += hundreds[word]
        elif word in thousands:
            if current == 0:
                current = 1
            total += current * 1000
            current = 0
        elif word in large_numbers:
            if current == 0:
                current = 1
            total += current * large_numbers[word]
            current = 0
    
    total += current
    if is_negative:
        total = -total
    return total
 
# Примеры:
print(transform_string_to_integer("один"))  # 1
print(transform_string_to_integer("двадцать"))  # 20
print(transform_string_to_integer("двести сорок шесть"))  # 246
print(transform_string_to_integer("семьсот восемьдесят три тысячи девятьсот девятнадцать"))  # 783919
print(transform_string_to_integer("две тысячи"))  # 2000
print(transform_string_to_integer("минус пятьсот"))  # -500
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.07.2024, 21:30
Помогаю со студенческими работами здесь

Как конвертировать nvarchar в число???
Привет. База содержит nvarchar- данные , после вырески в переменной остаётся число (Н: 300,52) - есть функция для конвертации в число????...

Конвертировать строку в число и обратно
Здравствуйте. Всех женщин поздравляю с праздником! Подскажите, для QSpinBox конвертировать строку в число и обратно, пользуюсь таким...

PhpExcel: Конвертировать число в дату
Добрый день. Подскажите как форматнуть дату из числа в нормальный формат d/m/y. Нашел статью на хабре, но не могу понять как на свой...

Конвертировать строку в число и обратно
Здравствуйте. Всех женщин поздравляю с праздником! Подскажите, для QSpinBox конвертировать строку в число и обратно, пользуюсь таким...

Как конвертировать текст в число
Вообще у меня такой вопрос хочу с текстового файла взять символы, всё получается только вот для работы нужно конвертировать текст в число,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru