[Python] reconocer cadenas en un ciclo y ejecutar

Iniciado por rul0, 10 Abril 2013, 01:47 AM

0 Miembros y 1 Visitante están viendo este tema.

rul0

Mi idea es hacer un ciclo en el cual se pida ingresar una cadena, y chequear que esta, primero que nada contenga en el primer caracter, una 'a'. Que admita solo 3 tipos de caracteres (a,b,c) y que según el caracter diga el caracter, juntando así la palabra. Y, por último, cuando se ingrese una cadena vacia, termine el ciclo y diga la suma de todas las letras ingresadas.

Mi prototipo:

x=0
fin=0
while (fin==0):
   cadena=raw_input('')
   if (cadena[0]=='A' or 'a'):
       for i in range (len(cadena)):
           if (cadena[i]=='A' or 'a'):
               print 'A'
           elif (cadena[i]=='B' or 'b'):
               print 'B'
           elif (cadena[i]=='C' or 'c'):
               print 'C'
           else:
               print 'Caracter invalido'
               continue
       continue
   else:
       print 'debe comenzar con A'
raw_input ()






Sé que parece no tener mucho sentido, pero es un ejercicio que quiero poder hacer.

GeoxX

Tu codigo tiene algunos problemas:
No usas la variable x para nada, el while nunca lo terminas, estas usando mal los arrays, en el if tienes problemas usando ese 'or', un raw_input para nada al final, no haces nada si el usuario ingresa una cadena vacia, etc.

Arreglando un poquito tu codigo, tengo esto:



fin = 0
cadenafinal = ''
cadena = ''

cadena = raw_input('')
if (cadena == 'A' or cadena == 'a'):
cadenafinal = cadena #asi cadenafinal contiene la primera 'a' o 'A'
print 'A'   
while (fin == 0):
cadena = raw_input('')
if (cadena == 'A' or cadena == 'a' ):
print 'A'
    elif (cadena == 'B' or cadena == 'b'):
print 'B'
    elif (cadena == 'C' or cadena == 'c' ):
        print 'C'
    elif (cadena == ''):
fin = 1 #para terminar el while
continue
else:
print 'Caracter invalido'
continue
    cadenafinal = cadenafinal + cadena
print 'La cadena final es: ' + cadenafinal
else:
print 'debe comenzar con A'


Asi funciona como dices en tu post, aunque cambiaria el if por esto:


if (cadena in ['a', 'b', 'c', 'A', 'B', 'C']):
print cadena.capitalize() #para que funcione como el anterior, devolviendo mayuscula
    elif (cadena == ''):
fin = 1
continue
else:
print 'Caracter invalido'
continue