Learn Python The Hard Way ex41中的程序

来源:互联网 发布:js 将数组变为字符串 编辑:程序博客网 时间:2024/06/08 10:12
import randomfrom urllib import urlopenimport sysWORD_URL = "http://learncodethehardway.org/words.txt"WORDS = []PHRASES = {"class %%%(%%%):":"Make a class named %%% that is-a %%%.","class %%%(object):\n\tdef __init__(self, ***)":"class %%% has-a __init__ that takes self and *** parameters.","class %%%(object):\n\tdef ***(self, @@@)":"class %%% has-a function named *** that takes self and @@@ parameters.","*** = %%%()":"Set *** to an instance of class %%%.","***.***(@@@)":"From *** get the *** function, and call it with parameters self, @@@.","***.*** = '***'":"From *** get the *** attribute and set it to '***'."}#do they want to drill phrases firstPHRASE_FIRST = Falseif  len(sys.argv) == 2 and sys.argv[1] == "english":PHRASE_FIRST = True# load up the words from the websitefor word in urlopen(WORD_URL).readlines():WORDS.append(word.strip())def convert(snippet, phrase):class_names = [w.capitalize() for w in random.sample(WORDS, snippet.count("%%%"))]other_names = random.sample(WORDS, snippet.count("***"))results = []param_names = []for i in range(0, snippet.count("@@@")):param_count = random.randint(1,3)param_names.append(', '.join(random.sample(WORDS, param_count)))for sentence in snippet, phrase:result = sentence[:]#fake class namesfor word in class_names:result = result.replace("%%%",word,1)#fake other_namesfor word in other_names:result = result.replace("***", word, 1)#fake parameter listsfor word in param_names:result = result.replace("@@@", word, 1)results.append(result)return results# keep going until they hit CTRL-Dtry:while True:snippets = PHRASES.keys()random.shuffle(snippets)for snippet in snippets:phrase = PHRASES[snippet]question, answer = convert(snippet, phrase)if PHRASE_FIRST:question, answer = answer, questionprint questionraw_input("> ")print "ANSWER: %s\n\n" % answerexcept EOFError:print "\nBye"

这个程序的作用是在网一个网址获取一些单词,用这些单词命名程序的代码块和其中的元素。不管你在>后输入什么,程序都会将该代码块的含义及作用打印出来。

当你按Ctrl+Z的时候,程序退出并打印Bye

运行如下:


0 0
原创粉丝点击