Cita:
Iniciado por BARK123 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 originaldef subcadena(c,n):
palabras=""
for i in range(1,len(c)):
palabras +=c[i]
print(palabras)
if len(palabras)==n:
print("la subpalabra",palabras,"cumple")
print("palabras",palabras,"tienen",n,"caracteres")
c=str(input("Introduce cadena"))
n=int(input("Introduce un nº entero"))
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 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 originaldef subcadena(c,n):
while len(c)<len(n):
print("La cadena 1º tiene que ser mas larga que la 2º")
c=str(input("Introduce otra cadena"))
n=str(input("Intentalo de nuevo con otra cadena"))
sub=""
for i in range(len(c)):
if c[i]== n[i]:
sub +=n[i]
print(sub,"es prefijo de",c)
c=str(input("Introduce otra cadena"))
n=str(input("Intentalo de nuevo on otra cadena"))
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)