【Python】Learn Python the hard way, ex41 面向对象术语练习
2015-10-17 21:27
691 查看
# coding:utf-8 # 导入模块 import random from urllib import urlopen import sys # 定义一个变量,字符串内容为一个url WORD_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 first if len(sys.argv) == 2 and sys.argv[1] == "english": PHRASE_FIRST = True else: PHRASE_FIRST = False # load up the words from the website for 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 names for word in class_names: result = result.replace("%%%", word, 1) # fake other names for word in other_names: result = result.replace("***", word, 1) # fake parameter lists for word in param_names: result = result.replace("@@@", word, 1) results.append(result) return results # keep going until they hit CTRL-D try: 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, question print question raw_input("> ") print "ANSWER: %s\n\n" % answer except EOFError: print "\nBye"
相关文章推荐
- Python3学习笔记——基础的巩固
- <LeetCode><Easy> 100 Same Tree
- python例子-关于时间time模块
- python例子-urllib,urllib2练习题合集.
- <LeetCode><Easy> 88 Merge Sorted Array
- 内网ip字典生成 python实现
- <LeetCode><Easy> 83 Remove Duplicates from Sorted List
- 在arcgis使用python脚本进行字段计算时对中文的处理方案
- python学习记录一 --by mumu
- <LeetCode><Easy> 67 Add Binary
- <LeetCode><Easy> 66 PlusOne
- <LeetCode><Easy> 58 Length of Last Word
- <LeetCode><Easy> 38 Count and Say
- Python+Django+Eclipse 在Windows下快速配置
- python中的字符串
- 【Python】Learn Python the hard way, ex40 模块,类和对象,这个解释比较容易理解
- 3.Python基础
- LeetCode----Decode Ways
- Python计算日期差
- 用python3.x与mysql数据库构建简单的爬虫系统