笨辦法學python習題43

梨渦發表於2018-02-09

python版本:3      若有錯誤,敬請指出 模組名稱:測試.py

首先這個是錯的,PDF後面一段沒有....後找到補了上去,然而我的版本是3.5,還有些錯誤,解決不了,先掛著

#習題43
import random
from urllib.request import urlopen
import sys
WORO_URL = "http://learncodethehardway.org/words.txt"
WORDS = []
PHRASES = {
        "class ###(###):":
        "Make a class names ### 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 funcition names *** that takes self and @@@ parameters.",
        "*** = ###()":
        "Set *** to an instnce of class ###.",
        "***.***(@@@)":
        "From *** get the *** function,and call it with parameters self,@@@.",
        "***.*** = '***':":
        "From *** get the *** attribute and set it to '***'."
        }
PHRASE_FIRST = False
if len(sys.argv) == 2 and sys.argv[1] == "english":
       
        PHRASE_FIRST = True

for word in urlopen(WORO_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("***"))
        result = []
        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[:]

                for word in class_names:
                        result = result.replace("###",word,1)
                for word in other_names:
                        result = result.replace("***",word,1)
                for word in param_names:
                        result = result.replace("@@@",word,1)
                results.append(result)
        return results
try:
        
        while True:
                snippets = (list(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)

                        input(">")
                        print("ANSWER:  %s\n\n"% answer)
except EOFError:
        print("\nBye")

相關文章