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'
答案 0 :(得分:0)
try-except
:try-except
的需要来自将输入转换为int
int
,则会出现ValueError
exception
int
in
确定输入是否在接受的输入的list
中。如果输入不在列表中,将再次调用admin()
。opcion
设置为全局变量。
admin()
以外的地方,请使用return
。opcion
函数之外需要int
作为admin()
,则使用return int(opcion)
def admin():
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')
opcion = input("Indique una opción valida: ")
while True:
if opcion in ['1', '2', '3', '4', '5', '6']:
return opcion # return the value if it's needed outside of admin()
break # stops the loop because a correct option has been selected
else:
print ("La instrución debe ser numerica.\n")
admin()
admin()