Foros del Web » Programando para Internet » Python »

problema con cadenas

Estas en el tema de problema con cadenas en el foro de Python en Foros del Web. por que en este codigo me salta el error "TypeError: 'str' object does not support item assignment" en la linea 13? @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código python: ...
  #1 (permalink)  
Antiguo 10/04/2010, 13:29
 
Fecha de Ingreso: noviembre-2009
Mensajes: 186
Antigüedad: 15 años, 1 mes
Puntos: 2
problema con cadenas

por que en este codigo me salta el error "TypeError: 'str' object does not support item assignment" en la linea 13?

Código python:
Ver original
  1. letr = 'a'
  2. no_adivinad = '_ _ _ _ _ _'
  3. adivinad = 'carlos'
  4.  
  5. def sustitucion(letra, no_adivinada, adivinada):
  6.     ''' sustituye la letra a adivinar en la palabra a adivinar'''
  7.  
  8.     l = [0, 1, 2, 3, 4, 5]
  9.  
  10.     for i in l[:] :
  11.         if adivinada[i] == letra:
  12.  
  13.             no_adivinada[i] = letra
  14.             print adivinada[i], i
  15.         else:
  16.  
  17.             continue
  18.  
  19.     print no_adivinada
  20.  
  21.    
  22. sustitucion(letr, no_adivinad, adivinad)
  #2 (permalink)  
Antiguo 10/04/2010, 14:06
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 9 meses
Puntos: 1360
Respuesta: problema con cadenas

las cadenas son elemento inmutables esto significa que no puedes hacer esto:
Código:
s = "aaaabbb"
s[0] = "c"
Lo correcto seria:
Código:
s = "aaaaaabbbb"
s = list(s)
s[0] = "c"
s = str(s)
Osea convertir el string a list hacer modificaciones y después volver a list.
  #3 (permalink)  
Antiguo 10/04/2010, 16:13
 
Fecha de Ingreso: noviembre-2009
Mensajes: 186
Antigüedad: 15 años, 1 mes
Puntos: 2
Respuesta: problema con cadenas

vale, muchas gracias, es que lei por ahi que las cadenas podian hacer tambien el slicing, como las listas, a si que supuse que tambien podian ser tratadas de esta manera.

edit: vale, ye he sustituido eso, pero sigue sin hacer lo que se supone que tiene que hacer, alguna ayuda +?



p.d.:0-2!!, que asco....

Última edición por stiwi222; 10/04/2010 a las 16:21
  #4 (permalink)  
Antiguo 10/04/2010, 17:07
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 9 meses
Puntos: 1360
Respuesta: problema con cadenas

Ok te dare unas pistas:

Código Python:
Ver original
  1. letr = 'a'
  2. no_adivinad = list('______')
  3. adivinad = 'carlos'
  4.  
  5. def sustitucion(letra, no_adivinada, adivinada):
  6.     ''' sustituye la letra a adivinar en la palabra a adivinar'''
  7.     l = [0, 1, 2, 3, 4, 5] #Hasta aqui va bien
  8.     for i in l[:] : # WFT?? para que la copia de la lista
  9.         if adivinada[i] == letra:
  10.             no_adivinada[i] = letra
  11.         else:
  12.             continue #Este else no esta haciendo nada, quitalo
  13.         print ''.join(no_adivinada)
  14.  
  15. sustitucion(letr, no_adivinad, adivinad)
  #5 (permalink)  
Antiguo 10/04/2010, 17:36
 
Fecha de Ingreso: noviembre-2009
Mensajes: 186
Antigüedad: 15 años, 1 mes
Puntos: 2
Respuesta: problema con cadenas

lo siento chico, pero sigo sin pillarlo... me siento inutil :(
  #6 (permalink)  
Antiguo 10/04/2010, 17:46
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 9 meses
Puntos: 1360
Respuesta: problema con cadenas

Entonces te recomiendo leer python para todos viene con ejemplos prácticos.
  #7 (permalink)  
Antiguo 11/04/2010, 03:45
 
Fecha de Ingreso: noviembre-2009
Mensajes: 186
Antigüedad: 15 años, 1 mes
Puntos: 2
Respuesta: problema con cadenas

ese es el libro con el que estoy aprendiendo python xD, de todas formas luego mirare a ver

gracias
  #8 (permalink)  
Antiguo 15/04/2010, 13:25
 
Fecha de Ingreso: noviembre-2009
Mensajes: 186
Antigüedad: 15 años, 1 mes
Puntos: 2
Respuesta: problema con cadenas

bueno, encontre esta slucion al problema:
Código python:
Ver original
  1. letr = 'c'
  2. no_adivinad = '______'
  3. adivinad = 'carlos'
  4.  
  5. def sustitucion(letra, no_adivinada, adivinada):
  6.     ''' sustituye la letra a adivinar en la palabra a adivinar'''
  7.  
  8.     no_adivininada = list(no_adivinada)
  9.     letra = list(letra)
  10.     adivinada = list(adivinada)
  11.     print letra
  12.  
  13.     for i in range(len(adivinada)) :
  14.         if adivinada[i] in letra:
  15.  
  16.                      
  17.             no_adivinada = no_adivinada[:i] + adivinada[i] + no_adivinada[i+1:]
  18.        
  19.  
  20.          
  21.         print  no_adivinada
  22.        
  23.  
  24.     print ''.join(no_adivinada)
  25.  
  26.    
  27. sustitucion(letr, no_adivinad, adivinad)

muchas gracias
  #9 (permalink)  
Antiguo 16/04/2010, 09:18
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: problema con cadenas

No es necesaria la conversión de adivinada a lista, las cadenas son secuencias y se pueden recorrer con for. La salida de:
Código Python:
Ver original
  1. for l in "hola":
  2.     print l
es
Código:
h
o
l
a
Saludos.

Etiquetas: cadenas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:20.