Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: rul0 en 10 Abril 2013, 01:47 am



Título: [Python] reconocer cadenas en un ciclo y ejecutar
Publicado por: rul0 en 10 Abril 2013, 01:47 am
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:

Código:
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.


Título: Re: [Python] reconocer cadenas en un ciclo y ejecutar
Publicado por: GeoxX en 15 Abril 2013, 00:23 am
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:


Código:
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:

Código:
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