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

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Entender la lógica de un bucle while en python.-
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Entender la lógica de un bucle while en python.-  (Leído 4,024 veces)
NOB2014


Desconectado Desconectado

Mensajes: 366



Ver Perfil
Entender la lógica de un bucle while en python.-
« en: 19 Noviembre 2017, 16:25 pm »

Hola gente, ¿como están?
El programa funciona, pero hay algo que salio de "casualidad" y lo que quiero es encontrarle la lógica.-
Lo que no entiendo es porque  funciona el bucle while.-

Código
  1. while((re.findall(expr, cadena))):

Código
  1. # -*- coding: utf-8 -*-
  2. import os
  3. import re
  4.  
  5. def input_abc():
  6. expr = r'[0-9]'
  7. cadena = input('\n Ingrece una cadena (no se permiten números)...: ')
  8. while((re.findall(expr, cadena))):
  9. borrar()
  10. cadena = input('\n Ingrece una cadena (no se permiten números)...: ')
  11.  
  12. return cadena
  13.  
  14. def borrar():
  15. print('\n\tError. No se permiten números...')
  16. input("\n Pulse una tecla para continuar...")
  17. if os.name == "posix":
  18. os.system ("clear")
  19. elif os.name == ("ce", "nt", "dos"):
  20. os.system ("cls")
  21.  
  22. def main():
  23. print("\n Cadena introducida: ", input_abc())
  24.  
  25. main()

Saludos.
Daniel


En línea

abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Entender la lógica de un bucle while en python.-
« Respuesta #1 en: 19 Noviembre 2017, 16:35 pm »

Código:
re.findall(expr, cadena)

esto consigue coincidencias en relación a una expresión regular, en este caso se evalúa si hay un numero, si hay un numero, findall retorna las coincidencias (que por defecto cualquier valor que no sea falso, 0, none o vacio, se asume verdadero) si no, retorna falso

por cierto, es IngreSe no con c


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
NOB2014


Desconectado Desconectado

Mensajes: 366



Ver Perfil
Re: Entender la lógica de un bucle while en python.-
« Respuesta #2 en: 19 Noviembre 2017, 16:54 pm »

Que Karma tengo con la ortografía, gracias me ha ayudado mucho tu explicación, otra pregunta ¿porque de esta forma no funciona correctamente?

Código
  1. while((re.findall(expr, cadena))==True):
En línea

abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Entender la lógica de un bucle while en python.-
« Respuesta #3 en: 19 Noviembre 2017, 17:09 pm »

porque re.findall no retorna true, retorna false y "no false" (es decir algo que no puede ser interpretado como falso, pero tampoco es un true booleano, sino un array que sería simplmemente algo que no es falso) en tal caso puedes usar

Código:
while((re.findall(expr, cadena))!=False):


es decir, sus valores retornados pueden ser

Código
  1. falla = False
  2. logra  = ["hola","mundo"]
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.866



Ver Perfil
Re: Entender la lógica de un bucle while en python.-
« Respuesta #4 en: 20 Noviembre 2017, 09:35 am »

En un escenario de la vida real lo que en muchas ocasiones necesitarás hacer es evaluar de forma explícita la cantidad de elementos en un Array... si es igual a 0, mayor que 1, 3 o 4 elementos exactos, etcétera, así que no deberías tomar el hábito de usar evaluaciones booleanas con arrays... por que estás empezando en el aprendizaje y eso te puede confundir.

Puedes verlo de esta manera, con una modificación notable que le añadí para usar la función len():
Código
  1. import re
  2.  
  3. regexp = r'[0-9]'
  4. string = "1234567890"
  5.  
  6. while len(re.findall(regexp, string)) !=0:
  7.    print "El Array contiene elementos."
  8.    string = re.sub(regexp, "", string)
  9.  
  10. else:
  11.    print "El Array ya no contiene elementos."

Nota: en el código de arriba puedes eliminar el "!=0", o también puedes reemplazarlo por !=False (ya que False equivale a 0), pero tan solo es un ejemplo para mostrarte la manera de evaluar cantidad de elementos, ya que se trata de trabajar con valores enteros...

Saludos.
« Última modificación: 20 Noviembre 2017, 09:38 am por Eleкtro » En línea



tincopasan


Desconectado Desconectado

Mensajes: 1.286

No es lo mismo conocer el camino que recorrerlo.


Ver Perfil
Re: Entender la lógica de un bucle while en python.-
« Respuesta #5 en: 20 Noviembre 2017, 12:25 pm »

Esta más que claro que te explican para que entiendas la lógica y python como muchos lenguajes te deja escribir el código que quieras, pero:
Código
  1. expr = r'[0-9]'  #esto sobra
  2. cadena = input('\n Ingrece una cadena (no se permiten números)...: ')
  3. while((re.findall(expr, cadena))): #que ganas de poner paréntesis, aunque la lógica de la sentencia la usaría
  4.  
con menos caracteres  llegas a lo mismo:
Código
  1. cadena = input('\n Ingrece una cadena (no se permiten números)...: ')
  2. while re.findall("\d", cadena):

En línea

NOB2014


Desconectado Desconectado

Mensajes: 366



Ver Perfil
Re: Entender la lógica de un bucle while en python.-
« Respuesta #6 en: 20 Noviembre 2017, 15:48 pm »

 Hola, muy buen día para todos.-
 Eleкtro, estoy leyendo y releyendo lo tuyo y lo voy a tener muy en cuenta.-                                                           
 tincopasan, muchas gracias por hacer que el código sea más conciso, lo que deduzco de todo esto es que
 soy muy fanático a la práctica y me alejo demasiado de la teoría/lógica y así voy a aprender muy poco,  :-(
 tengo que conseguir algún libro más completo de python.-

Saludos.
Daniel 
En línea

abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Tutorial python 2.7 bien explicado y facil de entender
Programación General
bichotg 0 2,965 Último mensaje 21 Febrero 2012, 16:23 pm
por bichotg
como entender el pseucodigo en la informatica ?me falta logica como mejorar
Foro Libre
Weeken 3 2,798 Último mensaje 26 Diciembre 2012, 21:55 pm
por $Edu$
(PYTHON) No logro entender una parte del código
Scripting
Runforyourlife 2 2,047 Último mensaje 3 Agosto 2015, 16:53 pm
por Runforyourlife
(Python 3.5) Bucle for
Scripting
BigKaz 1 1,880 Último mensaje 10 Diciembre 2016, 19:31 pm
por engel lex
¡¡¡Ayuda con entender logica de lenguaje ensamblador en nasm!!!
ASM
Broster27 2 3,240 Último mensaje 22 Abril 2022, 05:38 am
por Broster27
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines