Распознавание ввода номера в python

Я пытаюсь создать скрипт, который задает математическое уравнение, тогда пользователь должен ввести то, что, по их мнению, отвечает, а затем python выдаст ответ

Однако по какой-то причине python не любит raw_input () в корреляции с оператором eval.

Например, код:

print "What's 5+4" a = raw_input() print eval('5+4') 

Если бы я должен был ввести 10 в var 'a', я получил бы это сообщение об ошибке.

 Traceback (most recent call last): File "/tmp/W1SVH/Math.py", line 3, in <module> print eval('5 +4') File "<string>", line 1, in <module> TypeError: cannot concatenate 'str' and 'int' objects 

Но если бы я заменил raw_input на число «5», сценарий выглядит так.

 print "What's 5+4" a = 9 print eval('5+4') 

Тогда оно вернет 9, следовательно 5 + 4 = 9.

В любом случае, чтобы исправить это, чтобы я мог использовать raw_input (), чтобы запросить пользователя?

2 Solutions collect form web for “Распознавание ввода номера в python”

Объект, возвращаемый raw_input() является строкой . Вам необходимо преобразовать его в целое число, прежде чем выполнять арифметику с ним. Вы можете сделать это с помощью встроенной функции.

 print "What's 3+7" a = int(raw_input()) print eval('a +4') 

EDIT :

Как замечает ShadowRanger, использование eval избыточно, когда a является целым числом, поэтому вы можете просто дать Python оценить результат:

 print "What's 3+7" a = int(raw_input()) print(a + 4) 

Это не только легче читать, но и безопаснее . Использование eval на входе, полученном от пользователя, опасно и его следует избегать. Злоумышленник может ввести то, что при оценке может привести к потере данных или использованию ресурсов вашего компьютера.

попробуй это

 print "What's 3+7" a = 5 # system store input as '5' print eval(a +' + 4') # now final string will be '4 + 5' 
  • raw_input () всегда принимает входные данные в формате raw / string.
  • input () аналогичен запросу raw_input, эта функция принимает только числовые входы.

Несколько рекомендаций:

  • используйте input () для числовых входов и raw_input () для запроса имени и других строк.
  • предпочитайте не жестко кодировать свои номера или использовать число внутри строки
  • eval – замечательная функция, но я бы не часто ее использовал. Это требует отдельного выполнения, которое может вызывать ошибки, которые я могу ожидать, и другие.
  • Первичный номер для хранения больших жестких дисков - Сито Аткина
  • Вычисление значений косинуса для массива в Python
  • Как вычислить дорогостоящую сумму высокой точности в python?
  • Ошибочная идентификация значений int для Python
  • Вращение glViewport?
  • Как определить, что такое функция распределения вероятности из массива numpy?
  • Вычислить быстрый бревенчатый фундамент 2 потолка в python
  • Интегрирование многомерного интеграла в scipy
  • Максимизируйте функцию со многими параметрами (python)
  • Целочисленное деление на отрицательное число
  • Как вычислять квадратный корень в python?
  •  
    Interesting Posts for Van-Lav

    Python: зачем мариновать?

    Как использовать предварительно обработанное слово2vec в anano

    Добавление ManyToManyWidget в обратную сторону ManyToManyField в Django Admin

    Wxpython Переключение клавиатуры

    Возвращение struct из c ++ dll в Python

    Сценарий для извлечения данных с веб-страницы

    Переопределение индекса в объекте Pandas DataFrame

    GET Request работает с библиотекой запросов python, но не работает с curl

    flask-bcrypt – ValueError: Недопустимая соль

    Импортировать переменную класса из другого модуля

    Сочетание классов выделения функций в scikit-learn

    Scikit Learn Multilabel Classification: ValueError: вы, кажется, используете устаревшее представление данных с несколькими метками

    Как перезагрузить исходный файл Python, когда он интерактивно интерпретирует его с помощью «python -i»,

    Фильтр Scapy BPF не работает

    Используя MongoDB в качестве нашей основной базы данных, следует ли использовать отдельную базу данных графа для реализации отношений между объектами?

    Python - лучший язык программирования в мире.