1

我是python初学者。我正在尝试创建一个基本字典,其中单词的随机含义会出现,用户必须输入正确的单词。我使用了以下方法,但随机不起作用。我总是先得到第一个单词,当最后一个单词完成时,我会得到无限的“无”,直到我杀死它。使用python 3.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
wooo = [word, word1]
while 1:
    print(choice(wooo)())

但无论如何它都会打印你None,因为你的两个函数都没有返回任何东西(None)。

于 2012-08-30T16:34:04.193 回答
2

要回答您问题的一部分(“有什么方法可以让 python 不关心天气输入是否为大写字母?”):使用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 回答