Autor
|
Tema: [PYTHON] Como evaluar una cadena que no contenga numeros con sentencia if (Leído 7,337 veces)
|
jesslandero2
Desconectado
Mensajes: 16
La vida es un sin fin de aprendizaje
|
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: #este programa lee una letra del teclado y dice si es mayuscula o minuscula} #que identifique que sea solo una letra #que reconozca las Ñ print("Escribe un Letra para saber si Mayuscula o Minuscula") caracter=input("Escribe un caracter: ") #Lee la variable if len(caracter) == 1 and caracter.isalpha() == true: #Si solo es un caracter adelante y alfabetica if caracter >= "A" and caracter <= "Z": #evalua que se encuentre dentro de A y Z mayus print("El caracter ", caracter," Es Mayuscula") elif caracter >= "a" and caracter <= "z": print("El caracter ", caracter," Es Minuscula") #Evalua que se encuentre entre a y z minus elif caracter == "Ñ": # apartir de aqui evalua si es una Ñ print ("El caracter ",caracter," Es Ñ") elif caracter == "ñ": print("El caracter ",caracter,"Es ñ") else: #si no cumple ninguna de las anteriores, no es una letra. print("El caracter no es una letra") elif len(caracter) >= 2 and caracter.isalpha() == false: #quiero que si es mas d 2 caracters print("Debes escribir solo un caracter (sin numeros)") #y si esa cadena tiene numeros #lo identifique else: print("No escribas una cadena, solo un caracter") #ninguna d las anteriores
Antes lo tenia con if aplicados de la siguiente manera: 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
|
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
Mensajes: 16
La vida es un sin fin de aprendizaje
|
Hola de echo estoy en Python 3. Voy a probar con raw_input y comentaré que paso. Ahora estoy en mi trabajo
|
|
|
En línea
|
"La física es el sistema operativo del Universo"
Steven R Garman
|
|
|
tincopasan
Desconectado
Mensajes: 1.286
No es lo mismo conocer el camino que recorrerlo.
|
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 if len(caracter) == 1 and caracter.isalpha():#ya estás diciendo que debe ser verdadera
elif len(caracter) >= 2 and not caracter.isalpha():#debe ser falsa
3) 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: if "A" <= caracter <= "Z":
4)¿uándo te enseñan format? en fin, unas modiifcaciones a ese código,manteniendolo casi igual: #-*- coding:utf -8 -*- print("Escribe un Letra para saber si Mayuscula o Minuscula") caracter=input("Escribe un caracter: ") #Lee la variable if len(caracter) == 1 and caracter.isalpha(): #Si solo es un caracter adelante y alfabetica if "A" <= caracter <= "Z": #evalua que se encuentre dentro de A y Z mayus print("El caracter ", caracter," Es Mayuscula") elif "a" <= caracter <= "z": print("El caracter ", caracter," Es Minuscula") #Evalua que se encuentre entre a y z minus elif caracter == "Ñ": # apartir de aqui evalua si es una Ñ print ("El caracter ",caracter," Es Ñ") elif caracter == "ñ": print("El caracter ",caracter,"Es ñ") else: #si no cumple ninguna de las anteriores, no es una letra. print("El caracter no es una letra") elif len(caracter) >= 2 and not caracter.isalpha(): #quiero que si es mas d 2 caracters print("Debes escribir solo un caracter (sin numeros)") #y si esa cadena tiene numeros #lo identifique else: print("No escribas una cadena, solo un caracter") #ninguna d las anteriores
Saludos
|
|
|
En línea
|
|
|
|
jesslandero2
Desconectado
Mensajes: 16
La vida es un sin fin de aprendizaje
|
Gracias por la informacion, de verdad te agradezco. 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
Mensajes: 1.286
No es lo mismo conocer el camino que recorrerlo.
|
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
Mensajes: 2
|
No funciona el codigo publicado no reconoce las eñes
|
|
|
En línea
|
|
|
|
Serapis
|
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 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 array tipo AtributosDeCaracteres CharAtribs(0 a 255)
Punto3 ...al cargar el programa... // 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... // 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. 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
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Numeros dentro de una cadena
« 1 2 »
Programación Visual Basic
|
Fabricio
|
12
|
9,052
|
11 Noviembre 2009, 20:13 pm
por Fabricio
|
|
|
Guardar numeros de cadena en variable[python]
Scripting
|
Ricardo95
|
2
|
6,944
|
13 Junio 2011, 23:22 pm
por Ricardo95
|
|
|
Evaluar Una Funcion dentro de otra funcion Python
Scripting
|
cristiantorres
|
1
|
10,681
|
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,482
|
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,662
|
25 Septiembre 2017, 03:40 am
por engel lex
|
|