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

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [PYTHON] Como evaluar una cadena que no contenga numeros con sentencia if
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [PYTHON] Como evaluar una cadena que no contenga numeros con sentencia if  (Leído 7,001 veces)
jesslandero2

Desconectado Desconectado

Mensajes: 16


La vida es un sin fin de aprendizaje


Ver Perfil
[PYTHON] Como evaluar una cadena que no contenga numeros con sentencia if
« en: 24 Octubre 2017, 15:32 pm »

Buen dia.

Sigo con mis ejercios en python, estoy en un ejercicio que me solicita lo siguiente: Hacer un programa que sepa si un caracter es mayuscula o minuscula, poner ciertas condiciones para restringir la entrada de una cadena completa, es decir que se limite solo a evaluar un caracter. Tambien tiene que saber si es un numero.

Lo llevo asi:

Código
  1. #este programa lee una letra del teclado y dice si es mayuscula o minuscula}
  2. #que identifique que sea solo una letra
  3. #que reconozca las Ñ
  4.  
  5. print("Escribe un Letra para saber si Mayuscula o Minuscula")
  6. caracter=input("Escribe un caracter: ")  #Lee la variable
  7.  
  8.  
  9. if len(caracter) == 1 and caracter.isalpha() == true:  #Si solo es un caracter adelante y alfabetica
  10. if caracter >= "A" and caracter <= "Z": #evalua que se encuentre dentro de A y Z mayus
  11. print("El caracter ", caracter," Es Mayuscula")
  12.  
  13. elif caracter >= "a" and caracter <= "z":
  14. print("El caracter ", caracter," Es Minuscula") #Evalua que se encuentre entre a y z minus
  15.  
  16. elif caracter == "Ñ":     # apartir de aqui evalua si es una Ñ
  17. print ("El caracter ",caracter," Es Ñ")
  18. elif caracter == "ñ":
  19. print("El caracter ",caracter,"Es ñ")
  20. else: #si no cumple ninguna de las anteriores, no es una letra.
  21. print("El caracter no es una letra")
  22.  
  23. elif len(caracter) >= 2 and caracter.isalpha() == false: #quiero que si es mas d 2 caracters
  24. print("Debes escribir solo un caracter (sin numeros)") #y si esa cadena tiene numeros
  25. #lo identifique
  26. else:
  27. print("No escribas una cadena, solo un caracter")  #ninguna d las anteriores
  28.  

Antes lo tenia con if aplicados de la siguiente manera:
Código:
      if caracter >= 0 and caracter <= 0:
           print("Es un numero)

Estuve investigando sobre la validacion de caracteres y encontre la funcion isalpha ero con la función caracter.isalpha() == false (linea 23) me manda un error me dice que false no esta inicializada.  y con el true del primer if (linea 9) no me manda ese error. No entiendo por que

nota: tambien encontre que hay funciones predefinidas para saber si es mayuscula o minuscula, pero tengo que hacer el ejercicio con if  :-(


En línea

"La física es el sistema operativo del Universo"

                                        Steven R Garman
engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: [PYTHON] Como evaluar una cadena que no contenga numeros con sentencia if
« Respuesta #1 en: 24 Octubre 2017, 16:09 pm »

el asunto es que en python2 input es inestable en el tipo retornado, así que si retorna un numero el metodo.isalfa no existe para el... re recomiendo usar raw_input que retorna siempre string


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.
jesslandero2

Desconectado Desconectado

Mensajes: 16


La vida es un sin fin de aprendizaje


Ver Perfil
Re: [PYTHON] Como evaluar una cadena que no contenga numeros con sentencia if
« Respuesta #2 en: 24 Octubre 2017, 18:08 pm »

Hola de echo estoy en Python 3. Voy a probar con raw_input y comentaré que paso.

Ahora estoy en mi trabajo  :rolleyes:
En línea

"La física es el sistema operativo del Universo"

                                        Steven R Garman
tincopasan


Desconectado Desconectado

Mensajes: 1.286

No es lo mismo conocer el camino que recorrerlo.


Ver Perfil
Re: [PYTHON] Como evaluar una cadena que no contenga numeros con sentencia if
« Respuesta #3 en: 24 Octubre 2017, 20:04 pm »

tenés muchos errores de concepto:
1) el más grave, raw_input no existe en python 3

2) la función isalpha() retorna verdadero o falso entonces usas if o not if
Código
  1. if len(caracter) == 1 and caracter.isalpha():#ya estás diciendo que debe ser verdadera
Código
  1. elif len(caracter) >= 2 and not caracter.isalpha():#debe ser falsa

3)
Código
  1. if caracter >= "A" and caracter <= "Z": #evalua que se encuentre dentro de A y Z mayus
esto no es que esté mal, pero es feo mirarlo!!, lo mismo pero en python:
Código
  1. if "A" <= caracter <= "Z":

4)¿uándo te enseñan format?

en fin, unas modiifcaciones a ese código,manteniendolo casi igual:
Código
  1. #-*- coding:utf -8 -*-
  2. print("Escribe un Letra para saber si Mayuscula o Minuscula")
  3. caracter=input("Escribe un caracter: ")  #Lee la variable
  4.  
  5.  
  6. if len(caracter) == 1 and caracter.isalpha():  #Si solo es un caracter adelante y alfabetica
  7.    if "A" <= caracter <= "Z": #evalua que se encuentre dentro de A y Z mayus
  8.        print("El caracter ", caracter," Es Mayuscula")
  9.  
  10.    elif "a" <= caracter <= "z":
  11.        print("El caracter ", caracter," Es Minuscula") #Evalua que se encuentre entre a y z minus
  12.  
  13.    elif caracter == "Ñ":     # apartir de aqui evalua si es una Ñ
  14.        print ("El caracter ",caracter," Es Ñ")
  15.    elif caracter == "ñ":
  16.        print("El caracter ",caracter,"Es ñ")
  17.    else: #si no cumple ninguna de las anteriores, no es una letra.
  18.        print("El caracter no es una letra")
  19.  
  20. elif len(caracter) >= 2 and not caracter.isalpha(): #quiero que si es mas d 2 caracters
  21.    print("Debes escribir solo un caracter (sin numeros)") #y si esa cadena tiene numeros
  22.                                            #lo identifique
  23. else:
  24.    print("No escribas una cadena, solo un caracter")  #ninguna d las anteriores
  25.  

Saludos



 
En línea

jesslandero2

Desconectado Desconectado

Mensajes: 16


La vida es un sin fin de aprendizaje


Ver Perfil
Re: [PYTHON] Como evaluar una cadena que no contenga numeros con sentencia if
« Respuesta #4 en: 25 Octubre 2017, 03:56 am »

Gracias por la informacion, de verdad te agradezco.

Citar
4)¿Cuándo te enseñan format?

Bien la verdad es que me he buscado un buen libro(desde mi persepcion) y es el que estoy siguiedo, y de format, solo he visto .format() para mostrar datos con print

tendras un mejor libro o curso??
En línea

"La física es el sistema operativo del Universo"

                                        Steven R Garman
tincopasan


Desconectado Desconectado

Mensajes: 1.286

No es lo mismo conocer el camino que recorrerlo.


Ver Perfil
Re: [PYTHON] Como evaluar una cadena que no contenga numeros con sentencia if
« Respuesta #5 en: 25 Octubre 2017, 04:10 am »

si, format es para mostrar datos con print, de una forma mejor o más clara.
En cuanto a libros creo que cualquiera es bueno para empezar, después es cuestión de buscar sobre temas más especificos.
Saludos.
En línea

elflamas30

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: [PYTHON] Como evaluar una cadena que no contenga numeros con sentencia if
« Respuesta #6 en: 16 Junio 2018, 00:28 am »

No funciona el codigo publicado no reconoce las eñes
En línea

Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.351


Ver Perfil
Re: [PYTHON] Como evaluar una cadena que no contenga numeros con sentencia if
« Respuesta #7 en: 16 Junio 2018, 12:14 pm »

No te ahogues en un vaso de agua... Si un lenguaje no tiene exactamente una función tal y como tú la precisas, pués créala, que para eso sirve programar...


1 - Crea una enumeración con los tipos de atributos que vayas a necesitar...
2 - Crea un array del 0 al 255... cada uno representa los atributos para el carácter ASCII, bajo cuyo índice se aloja el valor.
3 - Establece los atributos que te parezca a cada uno según se te antoje o necesites (que la ñ es alfabética, pués listo, que no, pués no).

4 - Cuando debas hacer una verificación específica, recorres la cadena carácter a carácter preguntando justamente por lo que precisas... si basta que un solo carácter no cumpla lo esperado, pués hale devuelves FALSE.

5 - Como tales funciones pueden ser de uso general,. sería acorde declararlas estáticas...

pseudocódigo de ejemplo:

Punto 1
Código:
enumeracion AtributosDeCaracteres
    ATRIB_CARACTER_ES_DIGITO =1
    ATRIB_CARACTER_ES_MINUSCULA =2
    ATRIB_CARACTER_ES_MAYUSCULA =4
    ATRIB_CARACTER_ES_ALFABETICO = ATRIB_CARACTER_ES_MINUSCULA OR ATRIB_CARACTER_ES_MAYUSCULA
    ATRIB_CARACTER_ES_ALFANUMERICO = ATRIB_CARACTER_ES_ALFABETICO OR ATRIB_CARACTER_ES_DIGITO

    ATRIB_CARACTER_OTROS ATRIBUTOS QUE PRECISES... por ejemplo operadores: * / + - = > <, etc...
fin enumeracion

Punto 2

Código:
array tipo AtributosDeCaracteres CharAtribs(0 a 255)

Punto3
...al cargar el programa...
Código:
   // 0-9
    bucle para k desde 48 a 57
        CharAtribs(k) = ATRIB_CARACTER_ES_DIGITO
    fin bucle

    // A-Z
    bucle para k desde 65 a 90
        CharAtribs(k) = ATRIB_CARACTER_ES_MAYUSCULA
    fin bucle

    // Ñ mayúscula...
    CharAtribs(209) = ATRIB_CARACTER_ES_MAYUSCULA
    // Lo mismo con otras letras mayúsculas de los caracteres extendidos que quieras considerar
    // por ejemplo las vocales tildaddas Á É Í Ó Ú, pero quizás no con otras tildes diferentes À
    CharAtribs(193) = ATRIB_CARACTER_ES_MAYUSCULA  //Á
    CharAtribs(201) = ATRIB_CARACTER_ES_MAYUSCULA  //É
    CharAtribs(205) = ATRIB_CARACTER_ES_MAYUSCULA  //Í
    CharAtribs(211) = ATRIB_CARACTER_ES_MAYUSCULA  //Ó
    CharAtribs(218) = ATRIB_CARACTER_ES_MAYUSCULA  //Ú
    CharAtribs(220) = ATRIB_CARACTER_ES_MAYUSCULA  //Ü

    // ídem con letras minúsculas y más atributos que quieras... de hecho un carácter puede tener más de 1 atributo a la vez (por eso los enumeramos con potencias de 2, en vez de seguidos).

Punto 4... las funciones...
Código:
// digitos 0-9 pero no considera puntos decimales.
buleano = funcion EsTodoDigitos(string texto)
   Por cada valor de caracter en texto
       Si (CharAtribs(valor) and ATRIB_CARACTER_ES_DIGITO) = 0 devolver FALSE
   siguiente
   devolver TRUE
fin funcion

// A-Z, a-z (y vocales las tildadas y ü con diéresis y Ñ)
buleano = funcion EsTodoAlfabetico(string texto)
   Por cada valor de caracter en texto
       Si (CharAtribs(valor) and ATRIB_CARACTER_ES_ALFABETICO) = 0 devolver FALSE
   siguiente
   devolver TRUE
fin funcion

// A-Z, Á, É, Í, Ó, Ú, Ú, Ñ
buleano = funcion EsTodoMayusculas(string texto)
   Por cada valor de caracter en texto
       Si (CharAtribs(valor) and ATRIB_CARACTER_ES_MAYUSCULA) = 0 devolver FALSE
   siguiente
   devolver TRUE
fin funcion

Algo diferente, devolver el punto donde deja de haber dígitos.
Código:
entero = funcion NumDigitosAIzquierda(string texto)
   entero k = texto.Lenght
   entero index = 0

   Bucle para index desde 0 a k
       char =  CaracterEnPosicion(texto,index)
       Si (CharAtribs(ASCII(char)) and ATRIB_CARACTER_ES_DIGITO) = 0 devolver index  
   siguiente
   devolver k //todos sus caracteres son dígitos
fin funcion
« Última modificación: 16 Junio 2018, 12:15 pm por NEBIRE » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Numeros dentro de una cadena « 1 2 »
Programación Visual Basic
Fabricio 12 8,565 Último mensaje 11 Noviembre 2009, 20:13 pm
por Fabricio
Guardar numeros de cadena en variable[python]
Scripting
Ricardo95 2 6,714 Último mensaje 13 Junio 2011, 23:22 pm
por Ricardo95
Evaluar Una Funcion dentro de otra funcion Python
Scripting
cristiantorres 1 10,346 Último mensaje 14 Abril 2012, 06:20 am
por cristiantorres
[PYTHON]¿Cómo guardar datos de un rango de números que genero con un While?
Scripting
4T1L4 2 3,235 Último mensaje 24 Octubre 2016, 15:23 pm
por 4T1L4
[Python 3.6] Como hacer que python lea una cadena especifica de un fichero?
Scripting
n1sen 5 4,061 Último mensaje 25 Septiembre 2017, 03:40 am
por engel lex
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines