我如何正确处理错误?

时间:2018-06-05 04:01:52

标签: python error-handling

如何正确地写这个,以便任何非数字的输出都不能通过价格检查,所有打印出来的都是“非有效价格”。

目前,“非有效价格”部分正在更新到字典中。

name_input=input('OK. Please input the name of the person: ')
system_input=input('OK. Please input the favorite system: ')
line_input=input('OK. Please input the product line: ')
#
try:
    price_input=price_check(input('OK. Please input the product price: '))
except ValueError:
    print('Not a Valid Price')


products1={"id": str(int(products[-1]['id'])+1),
           "name": name_input,
           "system": system_input,
           "line": line_input,
           'price': price_input}
products.append(products1)

2 个答案:

答案 0 :(得分:0)

def price_check(value):
    if value.isdigit():
        return value
    else:
        return False

然后是这样的:

price_input = false
while not price_input:
    price_input = price_check(input('OK. Please input the product price: '))
    if not price_input:
        print('Invalid input')

products1={"id": str(int(products[-1]['id'])+1),
           "name": name_input,
           "system": system_input,
           "line": line_input,
           'price': price_input}
products.append(products1)

如果您不希望用户在字典中输入无效输入,这将有效。您可以轻松地自定义此项以使用try和excepts,但似乎您可能正在做作业,所以我会让您弄清楚。

如果您希望它只是打印“无效”'并且继续前进而不保存,然后你想做:

price_input = price_check(input('OK. Please input the product price: '))
if not price_input:
    print('Invalid input')
else:
    products1={"id": str(int(products[-1]['id'])+1),
       "name": name_input,
       "system": system_input,
       "line": line_input,
       'price': price_input}
    products.append(products1)

答案 1 :(得分:0)

你没有显示方法price_check的代码但是你需要写这个来验证你读取整数

name_input=input('OK. Please input the name of the person: ')
system_input=input('OK. Please input the favorite system: ')
line_input=input('OK. Please input the product line: ')
#
try:
   price_input=int(input('OK. Please input the product price: '))
except ValueError:
    print('Not a Valid Price')

`

当您编写任何不是整数引发ValueError异常

的内容时