zoukankan      html  css  js  c++  java
  • 笨办法学习python-ex41源码加自己注释

    #!/user/bin/env python
    #-*-coding:utf-8 -*-
    #Author: qinjiaxi
    import random
    from urllib import urlopen
    import sys
    WORD_URL = "http://learncodethehardway.org/words.txt"
    WORDS =[]
    PHRASES = {
        "class ###(###):":
        "Make a class named ### that is-a ###.",
        "class ###(object):
    	def __init__(self, ***)":
        "class has-a __init__that takes self and *** parameters.",
        "class ###(object):
    	def ***(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
    PHRASES_FIRST = False
    if len(sys.argv) == 2 and sys.argv[1] == 'english':
        PHRASES_FIRST = True
    #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('###'))]#从words序列中抽取带'###'的字符串,数量是片段里面含有'###'的数量并把第一个字母变大写,后面变小些(也就是随机抽取类)
        other_names = random.sample(WORDS, snippet.count("***"))#从words序列中抽取带'***'的字符串,数量是片段里面含有'***'的数量
        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)))#从words列表中随机抽取1-3个参数,加入到参数名列表中并用逗号隔开
        for sentence in snippet, phrase:
            result = sentence[:]
            #fake class_names
            for word in class_names:
                result = result.replace("###", word, 1)#把第一个'###'替换成word
            #fake other_names
            for word in sentence:
                result = result.replace("***", word, 1)#把第一个'***'替换成word
            #fake parameter lists
            for word in param_names:
                result = result.replace('@@@', word, 1)#把第一个'@@@'替换成word
            results.append(result)
        return results
    
    
    try:
        while True:
            snippets = PHRASES.keys()#获取字典中的key并以列表方式返回
            random.shuffle(snippets)#将列表中的元素随机打乱
    
            for snippet in snippets:
                phrase = PHRASES[snippet]#获取字典中的值
                question, answer = convert(snippet, phrase)#调用convert函数
                if PHRASES_FIRST:
                    question, answer = answer, question
                    print(question)
                    raw_input('>')
                    print("ANSWER: %s
    
    " % answer)
    except EOFError:
        print('
    bye')
    

      

    转载请注明出处 每天努力多一点,忧愁少一点,快乐多一点 --->by晴朗sky
  • 相关阅读:
    vue03
    vue02
    vue01
    VMware下Linux配置局域网和外网访问
    以太坊solidity编程常见错误(不定期更新)
    elasticsearch的探索之路
    一个rails项目连多个mongo数据库
    分析rails日志,计算响应率
    PostgreSQL新手上路PG::ConnectionBad (FATAL: Peer authentication failed
    cache目录没有权限
  • 原文地址:https://www.cnblogs.com/qinlangsky/p/9408206.html
Copyright © 2011-2022 走看看