笨辦法學python習題43
阿新 • • 發佈:2019-02-14
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")