@Kolya_Get
Интересуюсь вёрсткой, созданием игр.

Как строку «2-2» превратить в 0?

Я изобретаю бота для ВК, который решает выражения. Ввожу я в сообщения 2-2 ответа нет. В Python возникла ошибка.

Traceback (most recent call last):
File "G:\ботд.py", line 21, in
int_msg = int(msg)
ValueError: invalid literal for int() with base 10: '2-2'

import vk_api
from vk_api.longpoll import VkLongPoll, VkEventType
from tok import main_token

vk_session = vk_api.VkApi(token='//API спрятан')
seesion_api = vk_session.get_api()
longpoll = VkLongPoll(vk_session)


def sender(id, text):
    vk_session.method('messages.send', {'user_id': id, 'message': text,
                      'random_id': 0})


for event in longpoll.listen():
    if event.type == VkEventType.MESSAGE_NEW:
        if event.to_me:
            msg = event.text.lower()
            id = event.user_id
            if msg.isalpha() == False:
                int_msg = int(msg)
                sender(id, int_msg)
            else:
                sender(id, 'Пиши только буквы')


Что мне сделать, чтобы когда ввёл "2-2" бот ответил "0"?
  • Вопрос задан
  • 103 просмотра
Пригласить эксперта
Ответы на вопрос 2
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
from ast import literal_eval
...
result = literal_eval(msg)
Ответ написан
pro100chel
@pro100chel
Senior Pomidor Developer | CEO of GOVNOKOD LTD.
a = '2 + 2'
print(eval(a))

Код рабочий и выполнит твою задачу, но лучше использовать вариант Сереги, можешь посмотреть чем эти варианты отличаются.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы