(python) agregar usado para listar, luego solo devuelve valor si no se ha usado
Frecuentes
Visto 111 veces
0
El título lo dice todo. Lo que sigue es la base de un pequeño juego de aprendizaje japonés que escribí. Solo necesito imprimir el kana si aún no se ha impreso en el ciclo actual. ¿Alguien puede ver qué es lo que estoy haciendo mal? Gracias :)
#!/usr/bin/python
from os import system as cmd
from random import choice as random
from time import sleep
from sys import platform
m = ["ma", "mi", "mu", "me", "mo"]
y = ["ya", "yu", "yo"]
n = ["n"]
def get_dict(group):
if group == 1:
return m
elif group == 13:
return y
elif group == 14:
return n
elif group == 15:
return m + y + n
def clear():
if "win" in platform: cmd("cls")
if "lin" in platform: cmd("clear")
def get_kana():
global kana
return random(kana)
## Initiate ##
kana = get_dict(15)
speed = speed()
clear()
print disp
print "Please get ready!..."
sleep(5)
def chk_used():
global used_kana
numlpo = 0
while numlpo < 50:
numlpo = numlpo + 1
kana = get_kana()
if kana not in used_kana:
used_kana = used_kana.append(kana)
return kana
break
def main():
used_kana = []
while True:
clear()
print disp
print "Please write the following kana: \n"
print " " + chk_used()
sleep(3)
main()
1 Respuestas
0
Un par de cosas:
In chk_used
, tienes la línea:
used_kana = used_kana.append(kana)
Solo hay un problema. list.append()
devuelve Ninguno. Cada vez que haces esto, estás agregando kana
a used_kana
, pero luego está configurando el valor de used_kana
a Ninguno.
used_kana.append(kana)
Será suficiente
Usted define used_kana
dentro de una función
def main():
used_kana = []
Pero tratas de referirte a él globalmente. Python busca una variable global y no la encuentra.
def chk_used():
global used_kana
La solución: pass usó kana como argumento para chk_used()
def chk_used(usedCharacters):
...
def main():
used_kana = []
...
print " " + chk_used(used_kana)
Por último:
if kana not in used_kana:
used_kana.append(kana)
return kana
break #there's no reason for this break. the return on the line before exits the function, your code will never ever execute this line.
contestado el 03 de mayo de 12 a las 10:05
¡Gracias! ¡Eso fue muy completo y parece haber resuelto todos los problemas que tenía! Agregué la interrupción después como seguridad adicional, pero entiendo que no necesariamente haría nada. Además, la velocidad no está definida ya que eliminé 10-15 funciones adicionales que ayudan a cambiar la funcionalidad de ese programa. ¡Muchas gracias por tu ayuda! Ahora entiendo agregar :) - abkai
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas python list or haz tu propia pregunta.
Debe guardar la kana en un
dict
clasificados por sus sonidos iniciales. - Joel Cornett@Joel Cornett Estaba pensando en hacer eso, pero cambié de opinión porque me resulta mucho más fácil trabajar con listas cuando llamo a grupos personalizados. Aunque gracias por la sugerencia :) - abkai
Parece que estás haciendo varias cosas mal, la principal es
used_kana = used_kana.append(kana)
; eso está garantizado para establecerused_kana
aNone
. - Fred Foo