Foros del Web » Programando para Internet » Python »

[SOLUCIONADO] Comapracion de letras en string

Estas en el tema de Comapracion de letras en string en el foro de Python en Foros del Web. tengo que hacer un funcion en python que reciba dos strings y entregue el Nº de caracteres en que coinciden exactamente (en las mismas posiciones). ...
  #1 (permalink)  
Antiguo 15/01/2013, 07:29
Avatar de camilo1012  
Fecha de Ingreso: febrero-2011
Mensajes: 46
Antigüedad: 11 años, 4 meses
Puntos: 1
Pregunta Comapracion de letras en string

tengo que hacer un funcion en python que reciba dos strings y entregue el Nº de caracteres en que coinciden exactamente (en las mismas posiciones). Por ejemplo, coincidencias(“casa”,”cosa”) entrega 3 y coincidencias(“roma”,”amor”) entrega 0.

como la podria hacer ?

Última edición por camilo1012; 15/01/2013 a las 07:34
  #2 (permalink)  
Antiguo 15/01/2013, 08:59
 
Fecha de Ingreso: enero-2012
Ubicación: Buenos Aires
Mensajes: 745
Antigüedad: 10 años, 5 meses
Puntos: 35
Respuesta: Comapracion de letras en string

Hola. Yo lo haría de la siguiente manera:

Código Python:
Ver original
  1. def coincidencias(a, b):
  2.     count = 0
  3.     for i in range(len(a)):
  4.         if a[i] == b[i]:
  5.             count += 1
  6.     return count

Espero que te sirva!
  #3 (permalink)  
Antiguo 15/01/2013, 09:09
Avatar de camilo1012  
Fecha de Ingreso: febrero-2011
Mensajes: 46
Antigüedad: 11 años, 4 meses
Puntos: 1
Respuesta: Comapracion de letras en string

Gracias carbon me sirvio mucho :D...gracias !!
  #4 (permalink)  
Antiguo 15/01/2013, 09:47
Avatar de camilo1012  
Fecha de Ingreso: febrero-2011
Mensajes: 46
Antigüedad: 11 años, 4 meses
Puntos: 1
Respuesta: Comapracion de letras en string

pero mi duda es, lo tengo que usar para corregir una prueba en donde los primeros 20 digitos son el nombre del alumnos y los otros 25 en adelante son las repsuestas. De manera que al principio salga la pauta y luego vengan los alumnos algo asi:

Cita:
Pauta de Correccion DEBAACDEBDAABDCCABABDCECB
Manuel Antonio AmayaDE B CDE DADBDCC BEBACECB
donde los espacios sean respuestas omitidas y cuante las incorrectas.
Intente corregir el programa segun el codigo anterios apra lograr esto pero no funciono, el codigo que asi :
Código Python:
Ver original
  1. def revisar(a, b):
  2.     n = 0
  3.     for i in range(len(a[20:])):
  4.         if a[20:i] == b[20:i]:
  5.             n += 1
  6.     return n

como lo hago ?
  #5 (permalink)  
Antiguo 15/01/2013, 09:48
Avatar de camilo1012  
Fecha de Ingreso: febrero-2011
Mensajes: 46
Antigüedad: 11 años, 4 meses
Puntos: 1
Pregunta Respuesta: Comparacion de letras en string

Cita:
Iniciado por camilo1012 Ver Mensaje
tengo que hacer un funcion en python que reciba dos strings y entregue el Nº de caracteres en que coinciden exactamente (en las mismas posiciones). Por ejemplo, coincidencias(“casa”,”cosa”) entrega 3 y coincidencias(“roma”,”amor”) entrega 0.

como la podria hacer ?
  #6 (permalink)  
Antiguo 15/01/2013, 10:14
 
Fecha de Ingreso: enero-2012
Ubicación: Buenos Aires
Mensajes: 745
Antigüedad: 10 años, 5 meses
Puntos: 35
Respuesta: Comapracion de letras en string

Si entendí bien, podría funcionar lo siguiente. Le indicas a la función range desde donde quieres comenzar:

Código Python:
Ver original
  1. def revisar(a, b):
  2.     n = 0
  3.     for i in range(20, len(a)):
  4.         if a[i] == b[i]:
  5.             n += 1
  6.     return n

  #7 (permalink)  
Antiguo 15/01/2013, 16:22
Avatar de camilo1012  
Fecha de Ingreso: febrero-2011
Mensajes: 46
Antigüedad: 11 años, 4 meses
Puntos: 1
Respuesta: Comapracion de letras en string

revisa los resultados pero me sale el siguiente error:

Traceback (most recent call last):
File "C:\Users\Camilo\Desktop\edv\tarea 3\tarea3.py", line 16, in <module>
print revisar(p1l,linea1)
File "C:\Users\Camilo\Desktop\edv\tarea 3\tarea3.py", line 6, in revisar
if x[i] == y[i]:
IndexError: string index out of range
  #8 (permalink)  
Antiguo 15/01/2013, 18:29
 
Fecha de Ingreso: enero-2012
Ubicación: Buenos Aires
Mensajes: 745
Antigüedad: 10 años, 5 meses
Puntos: 35
Respuesta: Comapracion de letras en string

Cambia esto:

Código Python:
Ver original
  1. for i in range(20, len(a)):

Por esto:

Código Python:
Ver original
  1. for i in range(20, len(a) - 1):

  #9 (permalink)  
Antiguo 15/01/2013, 18:37
Avatar de camilo1012  
Fecha de Ingreso: febrero-2011
Mensajes: 46
Antigüedad: 11 años, 4 meses
Puntos: 1
Respuesta: Comapracion de letras en string

aun me sigue arrojando el mismo problema de:
if x[i] == y[i]:
IndexError: string index out of range

el codigo completo es:
Código Python:
Ver original
  1. psu=open("psu.txt","r")
  2. resul=open("resultados.txt","w")
  3. def revisar(x, y):
  4.     n = 0
  5.     for i in range(len(x) -1):
  6.         if x[i] == y[i]:
  7.             n += 1
  8.     return n
  9.  
  10. maxResultado=0
  11. minResultado=0
  12.  
  13. p1l=psu.readline()[20:]
  14. while True:
  15.     linea=psu.readline()[20:]
  16.     print revisar(p1l,linea)
  17.  
  18.     if linea=="":
  19.         break
  #10 (permalink)  
Antiguo 15/01/2013, 18:40
Avatar de Carlangueitor
Moderador ლ(ಠ益ಠლ)
 
Fecha de Ingreso: marzo-2008
Ubicación: México
Mensajes: 10.037
Antigüedad: 14 años, 3 meses
Puntos: 1329
Respuesta: Comapracion de letras en string

Será por que la segunda cadena es más corta que la primera. Tendrás que checar eso.

Y digo, la tarea es para que la hagas tu mismo

Saludos
__________________
Grupo Telegram Docker en Español
  #11 (permalink)  
Antiguo 15/01/2013, 18:43
Avatar de camilo1012  
Fecha de Ingreso: febrero-2011
Mensajes: 46
Antigüedad: 11 años, 4 meses
Puntos: 1
Respuesta: Comapracion de letras en string

jajjajajaj gracias Carlangueitor
  #12 (permalink)  
Antiguo 15/01/2013, 18:58
Avatar de camilo1012  
Fecha de Ingreso: febrero-2011
Mensajes: 46
Antigüedad: 11 años, 4 meses
Puntos: 1
Respuesta: Comapracion de letras en string

Pero aun sigo con el mismo problema, termina de leer todos las lineas pero me vuelve a tirar el error
  #13 (permalink)  
Antiguo 16/01/2013, 19:56
 
Fecha de Ingreso: enero-2013
Ubicación: 127.0.0.1
Mensajes: 16
Antigüedad: 9 años, 5 meses
Puntos: 6
Respuesta: Comapracion de letras en string

Recuerda que cuando se lee un archivo, se recorre linea por linea, hasta llegar a la ultima que esta vacía!... Entonces si pasas un objeto vacío, y haces len(objeto) - 1, entonces ahí cae el error, porque estarías en -1 de un string vacío, que si estuvieses un string -1 seria el ultimo elemento. Pero en algo vacío no hay elementos por eso tienes el error.

Debes verificar primero si la linea esta vacía.

Código Python:
Ver original
  1. psu=open("psu.txt","r")
  2.     resul=open("resultados.txt","w")
  3.     def revisar(x, y):
  4.         n = 0
  5.         for i in range(len(x) -1):
  6.             if x[i] == y[i]:
  7.                 n += 1
  8.         return n
  9.      
  10.     maxResultado=0
  11.     minResultado=0
  12.      
  13.     p1l=psu.readline()[20:]
  14.     while True:
  15.         linea=psu.readline()[20:]
  16.         if not linea:
  17.             break
  18.         print revisar(p1l,linea)

Nunca verifiques if a == "", mejor usa if not a, para todo lo que sea false, vacío o 0.

Saludos!

PD: Antes de empezar a programar debes leerte un libro o tutorial, no comenzar a darte golpes sin leer lo suficiente.

Etiquetas: Ninguno
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 18:48.