2015-07-13 2 views
-3

Здравствуйте, у меня есть программа, которая должна сканировать и сохранять штрих-коды для переменной. Все работает должным образом за то, что я получаю сообщение об ошибке, за исключением, когда штрих-код начинается с 0.Ошибка ввода-вывода Python

Вот пример моего кода:

user_code = eval(input("Hello please enter a coupon code: ")) 

Я должен использовать Eval (вход (. ... потому что я рассуждаю передать это целое число openpyxl (для хранения переменных в файле Excel)

Но каждый штрих-код начинается с 0, я получаю эту ошибку:

Hello please enter a coupon code: 0555 
Traceback (most recent call last): 
File "C:/Users/HP/Documents/PycharmProjects/coupon_scanner/coupon_scanner_V5.py", line 149, in <module> 
user_code = eval(input("Hello please enter a coupon code: ")) 
File "<string>", line 1 
0555 
^
SyntaxError: invalid token 
+1

Если вы превратите его в целое число, вы потеряете начальный ноль. Это приемлемо? – TigerhawkT3

+4

Не просто произвольные строковые входы 'eval' пользователя, [это действительно опасно] (https://stackoverflow.com/questions/1832940/is-using-eval-in-python-a-bad-practice) – CoryKramer

+0

Числа Python, начинающиеся с нуля, имеют особое значение: 0x12 является шестнадцатеричным, 0o12 - восьмеричным. Вы можете попытаться стянуть ведущие нули, используя lstrip ('0'). – mzuther

ответ

2

Вместо этого из-за соображения безопасности Eval считается опасной функцией и целое с 0 известен как octal integer.Like мудрого целого с x в курсе, как гекс целое так преобразование типа hapens

user_code = eval(input("Hello please enter a coupon code: ")) 

попробовать этот

user_code = int(input("Hello please enter a coupon code: ")) 
+0

Вы, сэр, и спаситель. Является ли это более безопасным для использования тогда eval (input()) –

+0

да нет проблемы в int(): p – The6thSense