Python实战(九)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chengqiuming/article/details/84310618

一 实战——模块、类、对象

1 ex40.py

# coding:utf-8
#################
# 习题40:模块,类和对象
#################
# 前言
# python是一门面向对象的语言。这个说法的意思是,python
# 里面有一种叫做类(class)的结构。
# 你需要明白的是:面向对象的思想,并尽快掌握它

class Song(object):

    def __init__(self, lyrics):
        self.lyrics = lyrics
        self.name = "cakin"  # 这就是要输出的东西

    def sing_me_a_song(self):
        for line in self.lyrics:
            print line

    def screech(self):  # 我在这里新增了一个方法--输出一些东西
        print "-" * 5
        print self.name


happy_bday = Song(["Happy birthday to you",
                   "I don't want to get sued",
                   "So I'll stop right there"])

bulls_on_parade = Song(["They rally around the family",
                        "With pockets full of shells"])

happy_bday.sing_me_a_song()

bulls_on_parade.sing_me_a_song()

happy_bday.screech()  # 函数的调用在这

2 运行结果

D:\Python27\python.exe E:/Python/exercise/ex40.py
Happy birthday to you
I don't want to get sued
So I'll stop right there
They rally around the family
With pockets full of shells
-----
cakin

二 实战——学习面向对象术语

1 ex41.py

# coding:utf-8
#################
# 习题41:学习面向对象术语
#################
# 前言
#
# 学习并熟悉面向对象的术语
#

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):\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 do drill phrases first(首先练习惯用语)
PHRASE_FIRST = False
if len(sys.argv) == 2 and sys.argv[1] == "english":
    PHRASE_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 (篡改)——原bug这里的缩进出问题了。
        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:  # 根据PHRASE_FIRST的值来判定问答的模式
                question, answer = answer, question

            print question

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

2 运行结果

D:\Python27\python.exe E:/Python/exercise/ex41.py english
class Apparel has-a function named caption that takes self and balloon parameters.
> class Apparel(object):\n\t def caption(self,ballon)
ANSWER: class Apparel(object):
    def caption(self, balloon)


Make a class named Brick that is-a Approval.
> class Brick(Approval):
ANSWER: class Brick(Approval):


From doctor get the creator attribute and set it to 'competition'.
>

猜你喜欢

转载自blog.csdn.net/chengqiuming/article/details/84310618