Python - Consulta: Error en leer lista de listas

 
Vista:
sin imagen de perfil
Val: 8
Ha disminuido su posición en 161 puestos en Python (en relación al último mes)
Gráfica de Python

Consulta: Error en leer lista de listas

Publicado por matias (4 intervenciones) el 10/06/2020 20:52:14
Hola. Tengo una lista de listas, estas listas contienen colores, paises y animales. A medida que el usuario va ingresando las palabras si la palabra esta devuelve 10 caso contrario -10. El problema lo tengo en que cuando el usuario ingresa la palabra lo busca en TODAS las listas y yo solo quiero que busque en cada lista por separado

1
2
3
4
5
6
7
8
9
10
11
12
13
palabraUsuario =input("ingrese una palabra")
listaDeTodo=[coloreslista,paiseslista,animaleslista]
 
def esCorrecta(palabraUsuario,listaDeTodo):
 
    if palabraUsuario in listaDeTodo[0]:
        return 10
    if palabraUsuario in listaDeTodo[1]:
        return 10
    if palabraUsuario in listaDeTodo[2]:
        return 10
    else:
       return -10
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
1
Responder
sin imagen de perfil
Val: 16
Ha disminuido su posición en 59 puestos en Python (en relación al último mes)
Gráfica de Python

Consulta: Error en leer lista de listas

Publicado por Juan (3 intervenciones) el 14/06/2020 05:28:47
Hola, espero estés bien, tu problema se puede solucionar de la siguiente forma, en vez de un if para que busque en cada lista, has un elif.
Mira lo así en el if de la linea 6 busca la palabra en la primera lista de la lista mayor, osea si esta que me devuelva un 10, si no no te devuelve nada, por lo tanto no se evalua el caso en el que no la encuentre por lo tanto pasa al siguiente if de la linea 8, si esta devuelve un 10 si no no te devuelve nada, por lo tanto no se evalua el caso de que no lo encuentre, entonces pasa al siguiente if de la linea 10, este if es diferente a los demas por que te preguntaras, por el hecho de que este si se evalua el caso en el cual la palabra no este en la lista ya que si no esta manda el -10 algo que no haces con los otros.
Por lo tanto es sencillo solucionarlo.
Solucion:

1
2
3
4
5
6
7
8
9
10
def esCorrecta(palabraUsuario,listaDeTodo):
 
    if palabraUsuario in listaDeTodo[0]:
        return 10
    elif palabraUsuario in listaDeTodo[1]:
        return 10
    elif palabraUsuario in listaDeTodo[2]:
        return 10
    else:
       return -10

Puedes revisar esta pagina por si tienes dudas https://www.mclibre.org/consultar/python/lecciones/python-if-else.html
Cuidate.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 8
Ha disminuido su posición en 161 puestos en Python (en relación al último mes)
Gráfica de Python

Consulta: Error en leer lista de listas

Publicado por matias (4 intervenciones) el 14/06/2020 05:58:00
hola juan gracias por el interes en ayudarme sabes que lo e intentado antes y no me funciono, llevo varias dias liado con esto, te adjunto un poco mas de codigo por si puede ayudar un poco mas.

El programa consiste en crear un juego. En pantalla aparece una letra y un item, por ejemplo ”V” y ”Colores” entonces el jugador debe escribir un color que empiece con dicha letra, en este caso podrıa ser ”violeta”.
Reglas del Juego
Apareceran en pantalla una letra y un item, el jugador va eligiendo los nombres, paıses, animales, etc y al finalizar el juego se muestran sus eleccione.
El juego actualmente consta de un archivo con el programa principal. Este se encarga de capturar la entrada del teclado, llevar la cuenta de los puntos y del tiempo, ası como tambien de dibujar en la pantalla. El programa principal cuenta tambien con: Tres listas, una con colores, otra con paıses y otra con animales. Otra lista con los nombres de estos items y una lista de listas llamada listaDeTodo que contiene como primer elemento la lista de colores, luego la de paıses y por ultimo la lista de animales.

La funcion unaAlAzar(lista): recibe una lista, el abecedario por ejemplo, y devuelve una letra al azar.
La funcion esCorrecta(palabraUsuario, letra, item, items, listaDeTodo) recibe una palabra, una letra, un item, la lista de items y la listaDeTodo, y devuelve un puntaje positivo si la palabra es correcta y uno negativo en caso contrario. Se considera correcta solo si la palabra aparece en el item correcto y empieza con la letra correcta.

Lo que debo poder lograr es que cuando aparece la categoria paises, recorra solamente la lista paises y una veces recorrida si encuentra el pais en la lista retorne 10 caso contrario - 10, una vez hecho esto aparecera otra categoria y tiene que hacer lo mismo, recorrer unicamente esta categoria. El problema actual es que recorre todas las listas ya sea cuando tengo que ingresar la primera o la ultima. Desde ya gracias el interes
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 16
Ha disminuido su posición en 59 puestos en Python (en relación al último mes)
Gráfica de Python

Consulta: Error en leer lista de listas

Publicado por Juan (3 intervenciones) el 15/06/2020 03:56:02
Hola Matias, me sirvió mucho mas como lo aclaraste. pero aun me quedan unas dudas sobre el funcionamiento del método esCorrecta, por lo tanto debido a lo que entendí y basándome en tu primera publicación mire un poco mejor el código, y te pido perdón por que el código que te mande anteriormente no era lo que se pensaba ni siquiera verificada una palabra con otra, si no que verificada si un String era igual a una lista y eso esta mal. por lo tanto adjunto el código de lo que creo que te podría servir.
Recuerda que yo lo hice en un main y no use patrones de diseño por lo que es como un ejemplo de lo que te podría servir.
Estaré atento.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
def esCorrecta(palabraUsuario,listaDeTodo):
 
  res = -10 #La variable que guardara la respuesta, la inicializamos con el valor -10, empezamos suponiendo que la palabra no se encuentra
 
  for i in listaDeTodo[0]:#Recorriendo todos los elementos de la lista colores
 
    if palabraUsuario == i:#Comparamos la plabra ingresada con cada valor de la lista de colores si lo encuentra la respuesta tomara el valor de 10
      res = 10
 
  if res == -10: #Verificamos que no se encontro en la lista colores la palabra del usuario
    for i in listaDeTodo[1]:#Recorriendo todos los elementos de la lista paises
 
      if palabraUsuario == i:#Comparamos la plabra ingresada con cada valor de la lista de paises si lo encuentra la respuesta tomara el valor de 10
        res = 10
 
    if res == -10:#Verificamos que no se encontro en la lista paises la palabra del usuario
      for i in listaDeTodo[2]:
 
        if palabraUsuario == i:#Comparamos la plabra ingresada con cada valor de la lista de animales si lo encuentra la respuesta tomara el valor de 10
          res = 10
 
  return res
#Listas creadas para poder probar el codigo
coloreslista = ["Blanco", "Azul"]
paiseslista = ["Colombia", "Mexico"]
animaleslista = ["Perro", "Gato"]
 
listaDeTodo=[coloreslista,paiseslista,animaleslista]
 
print(esCorrecta("Perro", listaDeTodo))
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar