2015-02-05 2 views
0
from decimal import * 
errors = "abcdffghijklmnopqrstuvwxyz?><:;\|{}[]" 
purchase_price = Decimal(input("Please enter the price of your item")) 
while purchase_price in errors: 
    print("Please enter the price of your item ex: 123.45") 
    break 
else: 

У меня возникли проблемы с проверкой ввода символа или символов в ошибках var.проверка наличия символа в строке Python

При входе все, что не является числом

Выход есть:

Traceback (most recent call last): 
    File "C:/Users/Chris/PycharmProjects/Tax Calculator/main.py", line 4, in <module> 
    purchase_price = Decimal(input("Please enter the price of your item")) 
decimal.InvalidOperation: [<class 'decimal.ConversionSyntax'>] 

Если персонаж там я хотел бы написать цикл, чтобы дать им еще одну возможность вновь войти Цена.

+0

Почему десятичный? Преобразуйте входные данные в float, сделайте так: 'float (input (« Пожалуйста, введите цену вашего товара »))' Это приведет к ошибке, если введен неправильный символ – sailesh

+0

sailesh, просто подумал, что я еще раз хочу отметить, что float не хороший способ справиться с деньгами, так как обычно хорошая точность важна :) –

ответ

1

Если вы хотите, чтобы вход быть числом, я предложил бы сделать это поплавок и обработки исключений, если вы не можете разобрать его:

try: 
    purchase_price = float(input("Please enter the price of your item")) 
except (ValueError, TypeError) as e: 
    pass # wasn't valid, print an error and ask them again. 

Хотя, обратите внимание, что поплавки не является хорошим способом точно обрабатывать деньги! Это огромная сделка! Вам необходимо найти в Интернете, чтобы найти подходящее решение: http://code.google.com/p/python-money/

+0

Эй, спасибо за помощь. У меня есть библиотека денег и работает вместо Decimal. Не могли бы вы объяснить мне за исключением? Я потерялся, когда увидел «как e' – Shilo

+0

Это передает объект исключения в' e', поэтому вы можете правильно регистрировать и обрабатывать исключение, как вам нужно. –

0
from decimal import * 

def ask(): 
    input_str = input("Please enter the price of your item"); 
    try: 
     number = Decimal(imput_str) 
     return number 
    except(InvalidOperation, ValueError, TypeError) as e: 
     return ask() 


number = ask() 
Смежные вопросы