0

タイトルはほとんどそれをすべて言います。以下は、私が書いた小さな日本語学習ゲームの基本です。現在のループでまだ印刷されていない場合にのみ、かなを印刷する必要があります。誰かが私が間違っていることが何であるかを見ることができますか?ありがとうございました :)

#!/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()
4

1 に答える 1

0

いくつかのこと:

にはchk_used、次の行があります。

used_kana = used_kana.append(kana)

問題は1つだけです。list.append()Noneを返します。これを行うたびに、に追加kanaused_kanaますが、の値used_kanaをNoneに設定します。

used_kana.append(kana)

十分であろう

used_kana関数内で定義します

def main():
    used_kana = []

しかし、あなたはそれをグローバルに参照しようとします。Pythonはグローバル変数を探しますが、見つかりません。

def chk_used():
    global used_kana

解決策:使用されたかなを引数として渡すchk_used()

def chk_used(usedCharacters):
    ...

def main():
    used_kana = []
        ...
        print "    " + chk_used(used_kana)

ついに:

    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.
于 2012-05-03T09:25:08.603 に答える