Ver Mensaje Individual
  #2 (permalink)  
Antiguo 12/06/2011, 09:54
Avatar de razpeitia
razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: aprendiz con problemas con ejercicio de subcadenas

Cita:
Iniciado por BARK123 Ver Mensaje
206)Di seña un programa que lea una cadena y un entero y muestre por pantalla todas las subcadenas de dicha longitud:(El problema que tengo es que me saca laas subcadenas pero no evalua la condicion)
Código Python:
Ver original
  1. def subcadena(c,n):
  2.     palabras=""
  3.     for i in range(1,len(c)):
  4.         palabras +=c[i]
  5.     print(palabras)
  6.     if len(palabras)==n:
  7.         print("la subpalabra",palabras,"cumple")
  8.     print("palabras",palabras,"tienen",n,"caracteres")
  9. c=str(input("Introduce cadena"))
  10. n=int(input("Introduce un nº entero"))
  11. print(subcadena(c,n))
??? Este programa ni siquiera saca las sub cadena. Te pondré un ejemplo si tengo "abcd" y n=2, las subcadenas serian.
"ab", "bc", "cd" en cambio tu programa hace esto "b", "bc", "bcd". Si no evalua la condición es por que no esta dentro del for. (Cuidado con la indentación).

Cita:
Iniciado por BARK123 Ver Mensaje
207)Diseña un programa que lea dos cadenas y diga si una es prefijo de la otra :
(aqui ni siquiera me deja ejecutarlo y no se porque)
Código Python:
Ver original
  1. def subcadena(c,n):
  2.    
  3.     while len(c)<len(n):
  4.         print("La cadena 1º tiene que ser mas larga que la 2º")
  5.         c=str(input("Introduce otra cadena"))
  6.         n=str(input("Intentalo de nuevo con otra cadena"))
  7.     sub=""
  8.     for i in range(len(c)):
  9.         if c[i]== n[i]:
  10.             sub +=n[i]
  11.            
  12.     print(sub,"es prefijo de",c)
  13.        
  14.    
  15.      
  16. c=str(input("Introduce otra cadena"))
  17. n=str(input("Intentalo de nuevo on otra cadena"))
  18. print(subcadena(c,n))
El problema de este programa esta en if c[i]== n[i] (Aquí c es mas grande por lo tanto es normal que falle ya que tratas de acceder a un indice de n que esta fuera del rango.

Si quieres mi consejo, utiliza el método startswith.
Por ejemplo:
Código:
s1 = "abcd"
s2 = "ab"
print s1.startswith(s2)