pyg = 'ei'
original = raw_input('Escribe una palabra:')
#Chequeo>
if len(original) > 0 and original.isalpha():
print original and original.lower()
else:
print 'Vacio'
palabra= original.lower()
primera= palabra[0] #primera letra
if primera== "a" or primera=="e" or primera=="i" or primera=="o" or primera=="u":
print "vocal"
elif primera== "A" or primera=="E" or primera=="I" or primera=="O" or primera=="U":
print "vocal"
else:
print "consonante"
Traceback (most recent call last):
File "python", line 9, in <module>
IndexError: string index out of range
if len(original) > 0 and original.isalpha():
print original and original.lower()
else:
print 'Vacio'
if valido:
#Codigo...
palabra= original.lower()
primera= palabra[0] #primera letra
if primera== "a" or primera=="e" or primera=="i" or primera=="o" or primera=="u":
print "vocal"
elif primera== "A" or primera=="E" or primera=="I" or primera=="O" or primera=="U":
print "vocal"
RC9 escribió:A ver, por partes:
- En esta porción de código:if len(original) > 0 and original.isalpha():
print original and original.lower()
else:
print 'Vacio'
Compruebas si lo que te introduce el usuario no está vacío o no es número, hasta ahí bien pero claro si no pasa esas dos validaciones printas "Vacío" y te quedas tan ancho porque luego sigues con la ejecución del programa. Por eso te salta ese error, porque el string no tiene primera posición al estar vacío. Aquí deberías parar el programa de alguna forma, usar un booleano tipo "valido" = true y si está vacío "valido" = false y nada más hacer el primer chequeo haces:if valido:
#Codigo...
- Lo segundo que veo mal es esa porción de código aunque no sé si es porque aun no lo has terminado o qué porque no tiene ningún sentido:palabra= original.lower()
primera= palabra[0] #primera letra
if primera== "a" or primera=="e" or primera=="i" or primera=="o" or primera=="u":
print "vocal"
elif primera== "A" or primera=="E" or primera=="I" or primera=="O" or primera=="U":
print "vocal"
Es decir, a parte de que podrías ponerlo todo en un solo if, jamás va a entrar en ese segundo if ya que antes has convertido el string a minúsculas.
Espero haberte aclarado algunas dudas.
pyg = 'ei'
original = raw_input('Escribe una palabra:')
#Chequeo>
if len(original) > 0 and original.isalpha():
print original and original.lower() and valido= True
else:
print 'Vacio' and valido= False
if valido= True:
palabra= original.lower()
primera= palabra[0] #primera letra
if primera== "a" or primera=="e" or primera=="i" or primera=="o" or primera=="u":
print "vocal"
elif primera== "A" or primera=="E" or primera=="I" or primera=="O" or primera=="U":
print "vocal"
else:
print "consonante"
File "python", line 6
print original and original.lower() and valido= True
^
SyntaxError: invalid syntax
if len(original) > 0 and original.isalpha():
valido = true
print original and original.lower()
else:
valido = false
print 'Vacio'
if valido:
#seguir con el codigo...
RC9 escribió:A lo que me refiero es:if len(original) > 0 and original.isalpha():
valido = true
print original and original.lower()
else:
valido = false
print 'Vacio'
if valido:
#seguir con el codigo...
if valido == True:
valido == True
if True:
Korso10 escribió:Cuando el intérprete llega al if, lo que hace es comprobar si la condición del if es True o False. Si pones:if valido == True:
El intérprete mira la condición:valido == True
Y genera el resultado, que en este caso es True, quedando:if True:
Como valido sólo puede tomar dos condiciones (True o False), puedes omitir la comparación.