2012-08-30 66 views
1

我是一个初学者python学习者。我正在尝试创建一个基本词典,词汇的随机含义将随之出现,用户必须输入正确的词汇。我使用了以下方法,但随机不起作用。我总是首先得到第一个词,当最后一个词结束时,我将无限的'无',直到我杀了它。使用蟒蛇3.2Python-如何初始化随机函数

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不关心天气的输入是否是大写字母?

+0

我将重新以更清晰的方式构建代码。你可以例如建立一个2元组列表,每个元组由'(“question”,“correct_answer”)组成。然后,我会随机选择这些元组中的一个,并将其提供给实际打印元组中第一个元素并请求用户输入的函数。这样做可以避免多次写入相同的代码。 –

+0

谢谢,我会尝试创建一个喜欢建议。 –

回答

2

要回答你的问题的一部分(“有没有什么办法可以让蟒蛇不关心天气的输入大写字母或不?”):使用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 
$ 
+0

我以前从未使用.lower函数。我如何使用它?我尝试在这样的地方添加一些内容:'while a =='Billowing'.lower():'但它不能完成这项工作。 –

+0

这是一个字符串方法。只需通过's.lower()'将其应用于字符串's',并返回相同的字符串,并将所有大写字母替换为小写字母。这就是为什么'FOO'.lower()'返回'“foo”'。在将测试字符串与引用字符串进行比较之前,将引用字符串(“滚滚”)保持为小写,并将测试字符串(用户给定)转换为小写。通过这样做,测试不区分大小写。例如:'a.lower()=='billowing''。 upvote帮助:-)的答案。 –

+0

感谢您的解释:)我正在使用'n ='abAsement'.lower() while a == n:' –

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

但在任何情况下,它会打印你None,导致您的两个函数返回任何结果(None)。

+0

谢谢:)它的工作原理!我试图摆脱没有回报,但它弄乱我想要的功能做的工作。 –