elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  (Python 3.5) Problema al manejar excepciones
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: (Python 3.5) Problema al manejar excepciones  (Leído 2,202 veces)
BigKaz

Desconectado Desconectado

Mensajes: 94


Ver Perfil
(Python 3.5) Problema al manejar excepciones
« en: 15 Diciembre 2016, 22:17 pm »

Código
  1. try:                                                                                          
  2. nm1 = input("MESA 1: Ingresa nombre de 1er jugador: ")
  3. except KeyboardInterrupt:
  4. while True:
  5. try:
  6. limpiar()
  7. nm1 = input("MESA 1: Ingresa nombre de 1er jugador: ")
  8. break
  9. except KeyboardInterrupt:
  10. continue                          
  11. while len(nm1)>20 or not nm1.isalpha() or len(nm1)<=2:
  12. try:
  13. nm1 = input("Demasiados car. (min 3 y max 20) o car. invalido, ingrese otra vez: ")
  14. while len(nm1)>20 or not nm1.isalpha() or len(nm1)<=2:
  15. nm1 = input("Demasiados car. (min 3 y max 20) o car. invalido, ingrese otra vez: ")
  16. limpiar()
  17. break
  18. except KeyboardInterrupt:
  19. limpiar()
  20. continue
  21. limpiar()
  22. try:                                                                                          
  23. ap1 = input("MESA 1: Ingresa apellido de 1er jugador: ")
  24. except KeyboardInterrupt:
  25. while True:
  26. try:
  27. limpiar()
  28. ap1 = input("MESA 1: Ingresa apellido de 1er jugador: ")
  29. break
  30. except KeyboardInterrupt:
  31. continue                          
  32. while len(ap1)>20 or not ap1.isalpha() or len(ap1)<=2:
  33. try:
  34. ap1 = input("Demasiados car. (min 3 y max 20) o car. invalido, ingrese otra vez: ")
  35. while len(ap1)>20 or not ap1.isalpha() or len(ap1)<=2:
  36. ap1 = input("Demasiados car. (min 3 y max 20) o car. invalido, ingrese otra vez: ")
  37. limpiar()
  38. break
  39. except KeyboardInterrupt:
  40. limpiar()
  41. continue

Tengo un problema al intentar poner el apellido del jugador 1, por ejemplo:

Código
  1. MESA 1: Ingresa nombre de 1er jugador: elhacker
  2. MESA 1: Ingresa apellido de 1er jugador:  """Pulso Ctrl+C para invocar a la excepcion KeyboardInterrupt. Deberia mostrar lo
  3. mismo y consultarme el apellido del primer jugador pero..."""
  4. MESA 1: Ingresa nombre de 1er jugador: """Aqui como que se devuelve y me pregunta el nombre del 1er jugador pero esta asignando
  5. mi entrada a la del apellido del jugador 1, deberia preguntarme el apellido."""
  6.  
             

Alguien sabe cual es el error y como lo soluciono??
Gracias.
PD: En las etiquetas geshi se ve el indentando mas largo, le hize copy-paste a mi codigo y quedo asi. En mi editor el indentando esta bien


« Última modificación: 16 Diciembre 2016, 01:09 am por BigKaz » En línea

tincopasan


Desconectado Desconectado

Mensajes: 1.286

No es lo mismo conocer el camino que recorrerlo.


Ver Perfil
Re: (Python 3.5) Problema al manejar excepciones
« Respuesta #1 en: 19 Diciembre 2016, 01:04 am »

la verdad que este código me parece muy repetitivo y nada claro, para el usuario o el programador, hice basicamente lo mismo pero de otra forma simple y para mi gusto más legible.
Código
  1. #-*- coding: utf -8- -*-
  2. def verifica(nn):
  3.    valida= False
  4.    if len(nn) <=2:
  5.        print("Debe tener más de 2 caracteres")
  6.    elif len(nn) > 20:
  7.        print("Debe tener un máximo de 20 caracteres")
  8.    elif not nn.isalpha():
  9.        print("Hay algún caracter inválido")
  10.    else:
  11.        valida = True
  12.        return valida    
  13. nombre= False
  14. while not nombre:
  15.    try:
  16.        nm1 = input("MESA 1: Ingresa nombre de 1er jugador: ")
  17.        if verifica(nm1):
  18.            nombre=True
  19.    except KeyboardInterrupt:
  20.        continue
  21. apellido= False
  22. while not apellido:
  23.    try:
  24.        ap1 = input("MESA 1: Ingresa apellido de 1er jugador: ")
  25.        if verifica(ap1):
  26.            apellido=True
  27.    except KeyboardInterrupt:
  28.        continue
  29.  
otra cosa no creas que el CTRL-C funciona igual en todos los sistemas


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema con excepciones.
Java
|Miguel| 0 1,668 Último mensaje 5 Febrero 2012, 19:29 pm
por |Miguel|
Problema con las excepciones
Programación C/C++
amchacon 3 2,136 Último mensaje 28 Enero 2013, 14:50 pm
por amchacon
Problema con excepciones en C++: Stackwalker.h
Programación C/C++
SARGE553413 3 2,179 Último mensaje 2 Marzo 2013, 17:03 pm
por naderST
Problema con Excepciones en C#
.NET (C#, VB.NET, ASP)
ORTUS 2 2,998 Último mensaje 13 Junio 2013, 16:43 pm
por ORTUS
[Python 3]Problema con excepciones en Python
Scripting
n1sen 2 3,509 Último mensaje 18 Diciembre 2017, 17:51 pm
por JoseluCross
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines