ValueError:int()的无效文字,基数为10:“一个” [重复项]

问题描述 投票:0回答:1

此问题已经在这里有了答案:

def admin():

    def admin_try():
        print ("1) Ver lista de productos.",'\n')
        print ("2) Agregar un producto.",'\n')
        print ("3) Modificar un producto (Precio).",'\n')
        print ("4) Eliminar un producto.",'\n')
        print ("5) Pedidos agendados.",'\n')
        print ("6) Salir.",'\n')
        global opcion
        opcion = int(input("Indique una opción valida: "))

    while True:
        try:
            admin_try()
        except (ValueError):
            print ("La instrución debe ser numerica.")
        admin_try()

admin()  # I get an error

执行此代码时出现错误,我想尝试一下循环,并且在执行代码时收到此错误。我想要的是,每当用户提出错误信息时,该函数就会始终执行。

Traceback (most recent call last): File "g:/proyecto/try.py", line 15, in admin admin_try() File "g:/proyecto/try.py", line 11, in admin_try opcion = int(input("Indique una opción valida: ")) ValueError: invalid literal for int() with base 10: 'uno' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "g:/proyecto/try.py", line 20, in <module> admin() File "g:/proyecto/try.py", line 18, in admin admin_try() File "g:/proyecto/try.py", line 11, in admin_try opcion = int(input("Indique una opción valida: ")) ValueError: invalid literal for int() with base 10: 'one'

python valueerror
1个回答
0
投票

请勿使用try-except

  • 需要使用try-except是由于将输入转换为int
    • 如果尝试将非数字输入转换为int,则会出现ValueError exception
    • 无需转换为int就可以执行此代码
  • 使用membership operator, in确定输入是否在可接受的输入的in中。如果输入不在列表中,则再次调用list
  • 不需要将admin()设置为全局变量。
    • 如果需要opcion以外的地方,请使用admin()
    • 如果return功能以外的opcion需要int,则使用admin()
return int(opcion)
© www.soinside.com 2019 - 2024. All rights reserved.