Autor
|
Tema: Entender la lógica de un bucle while en python.- (Leído 4,043 veces)
|
NOB2014
Desconectado
Mensajes: 366
|
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.- while((re.findall(expr, cadena))):
# -*- coding: utf-8 -*- import os import re def input_abc(): expr = r'[0-9]' cadena = input('\n Ingrece una cadena (no se permiten números)...: ') while((re.findall(expr, cadena))): borrar() cadena = input('\n Ingrece una cadena (no se permiten números)...: ') return cadena def borrar(): print('\n\tError. No se permiten números...') input("\n Pulse una tecla para continuar...") if os.name == "posix": os.system ("clear") elif os.name == ("ce", "nt", "dos"): os.system ("cls") def main(): print("\n Cadena introducida: ", input_abc()) 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
|
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
Mensajes: 366
|
Que Karma tengo con la ortografía, gracias me ha ayudado mucho tu explicación, otra pregunta ¿porque de esta forma no funciona correctamente? 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
|
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 while((re.findall(expr, cadena))!=False): es decir, sus valores retornados pueden ser falla = False 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
Conectado
Mensajes: 9.878
|
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(): import re regexp = r'[0-9]' string = "1234567890" while len(re.findall(regexp, string)) !=0: print "El Array contiene elementos." string = re.sub(regexp, "", string) else: 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
Mensajes: 1.286
No es lo mismo conocer el camino que recorrerlo.
|
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: expr = r'[0-9]' #esto sobra cadena = input('\n Ingrece una cadena (no se permiten números)...: ') while((re.findall(expr, cadena))): #que ganas de poner paréntesis, aunque la lógica de la sentencia la usaría
con menos caracteres llegas a lo mismo: cadena = input('\n Ingrece una cadena (no se permiten números)...: ') while re.findall("\d", cadena):
|
|
|
En línea
|
|
|
|
NOB2014
Desconectado
Mensajes: 366
|
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.-
|
|
|
|
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,969
|
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,801
|
26 Diciembre 2012, 21:55 pm
por $Edu$
|
|
|
(PYTHON) No logro entender una parte del código
Scripting
|
Runforyourlife
|
2
|
2,052
|
3 Agosto 2015, 16:53 pm
por Runforyourlife
|
|
|
(Python 3.5) Bucle for
Scripting
|
BigKaz
|
1
|
1,887
|
10 Diciembre 2016, 19:31 pm
por engel lex
|
|
|
¡¡¡Ayuda con entender logica de lenguaje ensamblador en nasm!!!
ASM
|
Broster27
|
2
|
3,272
|
22 Abril 2022, 05:38 am
por Broster27
|
|