第43个python程序:类

#!/usr/bin/env Python
#-*-coding:utf-8-*-


import random
from urllib import urlopen
import sys


WORD_URL="http://learncodethehardway.org/words.txt"
WORDS=[]


PHRASES={
  "class ###(###):":
    "make a calss 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
PHRASE_FIRST=False
if len(sys.argv)==2 and sys.argv[1]=="english":
  PHRASEa_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("###"))]
  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"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值