Foros del Web » Programando para Internet » Python »

[Ejercicio]Letra o Numero

Estas en el tema de [Ejercicio]Letra o Numero en el foro de Python en Foros del Web. Saludos: [URL="http://progra.usm.cl/apunte/ejercicios/1/letra-o-numero.html"]http://progra.usm.cl/apunte/ejercicios/1/letra-o-numero.html[/URL] El codigo que escribi es: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código Python: Ver original a = raw_input ( ) if a == str ( a ) ...
  #1 (permalink)  
Antiguo 19/09/2011, 17:28
 
Fecha de Ingreso: septiembre-2011
Mensajes: 42
Antigüedad: 12 años, 7 meses
Puntos: 3
[Ejercicio]Letra o Numero

Saludos:

[URL="http://progra.usm.cl/apunte/ejercicios/1/letra-o-numero.html"]http://progra.usm.cl/apunte/ejercicios/1/letra-o-numero.html[/URL]

El codigo que escribi es:
Código Python:
Ver original
  1. a = raw_input ()
  2. if a==str(a):
  3.     print a,"es letra"
  4. elif a==float(a):
  5.         print a,"es numero"
  6. else:
  7.     print a,"no es letra ni numero"
Pero solo me funciona si es letra, me falla con numeros y caracteres especiales.
Alguna sugerencia?


Exitos!
__________________
"Porque nada se...
quiero saberlo todo"
  #2 (permalink)  
Antiguo 19/09/2011, 17:55
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: [Ejercicio]Letra o Numero

Si ponerte a leer un poco. Especialmente los métodos que tiene un string.

Pero te diré por que falla tu programa.
Código Python:
Ver original
  1. a = raw_input() #Esto siempre devuelve un string
  2. if a == str(a): #Esto siempre sera verdadero, por lo tanto siempre te dira que es letra.
  #3 (permalink)  
Antiguo 21/09/2011, 15:49
 
Fecha de Ingreso: septiembre-2011
Mensajes: 42
Antigüedad: 12 años, 7 meses
Puntos: 3
Respuesta: [Ejercicio]Letra o Numero

Saludos:

Mi nuevo codigo quedo asi:
Código Python:
Ver original
  1. a = str(raw_input ())
  2. if str.isupper(a)==True:
  3.     print a,"es una letra mayuscula"
  4. elif str.islower(a)==True:
  5.     print a,"es una letra minuscula"
  6. elif str.isdigit(a)==True:
  7.     print a,"es un numero"
  8. else:
  9.     print a,"no es letra ni numero"

Pero mi duda es la siguiente...solo me funciono el programa al agregar str() al raw_input, si no lo agregaba, me decia que no era una cadena de texto, pero al ser raw_input no devuelve automaticamente un str?


Exitos!!
__________________
"Porque nada se...
quiero saberlo todo"
  #4 (permalink)  
Antiguo 21/09/2011, 16:00
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: [Ejercicio]Letra o Numero

Claro que raw_input() devuelve un string.

De hecho esta en la documentación.
  #5 (permalink)  
Antiguo 21/09/2011, 16:12
 
Fecha de Ingreso: septiembre-2011
Mensajes: 42
Antigüedad: 12 años, 7 meses
Puntos: 3
Respuesta: [Ejercicio]Letra o Numero

Eso esta claro, por lo mismo esa es mi duda ¿porque debo agregarle str() al raw_input para que me funcione?
Si uso este codigo:
Código Python:
Ver original
  1. a = raw_input ()
  2. if str.isupper(a)==True:
  3.     print a,"es una letra mayuscula"
  4. elif str.islower(a)==True:
  5.     print a,"es una letra minuscula"
  6. elif str.isdigit(a)==True:
  7.     print a,"es un numero"
  8. else:
  9.     print a,"no es letra ni numero"
Me lanza este error:
TypeError: descriptor 'isupper' requires a 'str' object but received a 'unicode'

Pero al cambiarlo a str(raw_input ()) me funciona perfectamente...


Exitos!!
__________________
"Porque nada se...
quiero saberlo todo"
  #6 (permalink)  
Antiguo 21/09/2011, 16:28
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: [Ejercicio]Letra o Numero

Es por que por alguna razón la cual desconozco raw_input te esta regresando un objeto unicode en vez de un str.

Supongo que es por el editor que estas usando o tal estas usando PythonG.
  #7 (permalink)  
Antiguo 21/09/2011, 16:50
 
Fecha de Ingreso: septiembre-2011
Mensajes: 42
Antigüedad: 12 años, 7 meses
Puntos: 3
Respuesta: [Ejercicio]Letra o Numero

Estoy usando PyScripter 2.7
Pero como dices, el editor me tira error, pero al ejecutarlo directamente como un programa, me funciona bien.

Muchas gracias razpeitia ;)
__________________
"Porque nada se...
quiero saberlo todo"
  #8 (permalink)  
Antiguo 21/09/2011, 20:02
 
Fecha de Ingreso: septiembre-2011
Mensajes: 42
Antigüedad: 12 años, 7 meses
Puntos: 3
Respuesta: [Ejercicio]Letra o Numero

Aqui les dejo otro metodo para resolver el problema, que era el que necesitaba, ya que el reto del taller en que estoy, es hacer un programa con lo basico, para asi, entender completamente lo basico (aunque suene redundante)

Código Python:
Ver original
  1. a = raw_input ()
  2. if a>="a" and a<="z":
  3.     print a,"es letra minuscula"
  4. elif a>"A" and a<="Z":
  5.     print a,"es letra mayuscula"
  6. elif a>"0" and a<="9":
  7.     print a,"es un numero"
  8. else:
  9.     print a,"no es letra ni numero"
Este esta desarrollado, basandose en la tabla ASCII

Salu2!
__________________
"Porque nada se...
quiero saberlo todo"
  #9 (permalink)  
Antiguo 21/09/2011, 20:09
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: [Ejercicio]Letra o Numero

No funciona para 'A' ni para '0'
  #10 (permalink)  
Antiguo 21/09/2011, 20:18
 
Fecha de Ingreso: septiembre-2011
Mensajes: 42
Antigüedad: 12 años, 7 meses
Puntos: 3
Respuesta: [Ejercicio]Letra o Numero

Me comi esos 2 "=", no puedo editar (por ser nuevo...no lo soy pero nueva cuenta xD), pero se entendio la idea...
Código Python:
Ver original
  1. a = raw_input ()
  2. if a>="a" and a<="z":
  3.     print a,"es letra minuscula"
  4. elif a>="A" and a<="Z":
  5.     print a,"es letra mayuscula"
  6. elif a>="0" and a<="9":
  7.     print a,"es un numero"
  8. else:
  9.     print a,"no es letra ni numero"

Gracias razpeitia, casi lo envio con ese error ;)
__________________
"Porque nada se...
quiero saberlo todo"

Etiquetas: numero
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:53.