1

私はPythonの初心者です。単語のランダムな意味が出てきて、ユーザーが正しい単語を入力しなければならない基本的な辞書を作成しようとしています。次の方法を使用しましたが、ランダムが機能しません。私は常に最初の単語を最初に取得し、最後の単語が終了すると、それを殺すまで無限の「なし」を取得します。Python3.2を使用する

from random import choice


print("Welcome , let's get started")
input()

def word():
    print('Humiliate')
    a = input(':')
    while a == 'abasement':
        break
    else:
        word()
    #   --------------------------------------------------------- #



def word1():
    print('Swelling')
    a = input(':')
    while a == 'billowing':
        break
    else:
        word()
#   ------------------------------------------------------------ #


wooo = [word(),word1()]
while 1==1:
    print(choice(wooo))

これを実行して実際にランダムにするより速い方法はありますか?クラスをやってみましたが、これより難しいようです。また、入力が大文字かどうかをPythonに気にしないようにする方法はありますか?

4

2 に答える 2

2

あなたの質問の一部に答えるには(「入力が大文字かどうかをPythonに気にしないようにする方法はありますか?」):use some_string.lower()

>>> "foo".lower() == "foo"
True
>>> "FOO".lower() == "foo"
True

これは、コードの構造を改善する方法を支援するためのものです。

import sys
from random import choice

WORDPAIRS = [('Humiliate', 'abasement'), ('Swelling', 'billowing')]

def ask():
    pair = choice(WORDPAIRS)
    while True:
        answer = raw_input("%s: " % pair[0]).lower()
        if answer == pair[1]:
            print "well done!"
            return


def main():
    try:
        while True:
            ask()
    except KeyboardInterrupt:
        sys.exit(0)


if __name__ == "__main__":
    main()

それはそのように機能します:

$ python lulu.py 
Swelling: lol
Swelling: rofl
Swelling: billowing
well done!
Humiliate: rofl
Humiliate: Abasement
well done!
Swelling: BILLOWING
well done!
Humiliate: ^C
$
于 2012-08-30T16:45:44.703 に答える
2
wooo = [word, word1]
while 1:
    print(choice(wooo)())

しかし、いずれにせよ、それはあなたを印刷しますNone、あなたの両方の関数が何も返さないようにします(None)。

于 2012-08-30T16:34:04.193 に答える