• 大小: 28.71MB
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2023-07-24
  • 语言: Python
  • 标签: Python3  

资源简介

非常经典的Python3教材。英文版是可以复制内容的原版,非扫描版! 中英版对照,学习效果更佳! 附带源码供参考!

资源截图

代码片段和文件信息

#!/usr/bin/env python3
# Copyright (c) 2008-11 Qtrac Ltd. All rights reserved.
# This program or module is free software: you can redistribute it and/or
# modify it under the terms of the GNU General Public License as published
# by the Free Software Foundation either version 3 of the License or
# (at your option) any later version. It is provided for educational
# purposes and is distributed in the hope that it will be useful but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.

“““
>>> u = Stack()
>>> u.push(1); u.push(2); u.push(4)
>>> str(u)
‘[1 2 4]‘
>>> u.can_undo
True
>>> while u.can_undo:
...     u.undo()
>>> str(u)
‘[]‘
>>> for x in list(range(-5 0)) +  list(range(5)):
...    u.push(x)
>>> str(u)
‘[-5 -4 -3 -2 -1 0 1 2 3 4]‘
>>> u.top()
4
>>> total = 0
>>> for x in range(5):
...     total += u.pop()
>>> str(u) total
(‘[-5 -4 -3 -2 -1]‘ 10)
>>> while u.can_undo:
...     u.undo()
>>> str(u)
‘[]‘

>>> import os
>>> import tempfile
>>> filename = os.path.join(tempfile.gettempdir() “fs.pkl“)
>>> fs = FileStack(filename)
>>> for x in list(range(-5 0)) +  list(range(5)):
...    fs.push(x)
>>> str(fs)
‘[-5 -4 -3 -2 -1 0 1 2 3 4]‘
>>> fs.top()
4
>>> total = 0
>>> for x in range(5):
...     total += fs.pop()
>>> str(fs) total
(‘[-5 -4 -3 -2 -1]‘ 10)
>>> fs.push(909)
>>> str(fs)
‘[-5 -4 -3 -2 -1 909]‘
>>> os.path.basename(fs.filename)
‘fs.pkl‘
>>> fs.save()
>>> fs2 = FileStack(filename)
>>> str(fs2)
‘[]‘
>>> fs2.push(-32)
>>> fs2.can_undo
True
>>> fs2.load()
>>> fs2.can_undo
False
>>> str(fs2)
‘[-5 -4 -3 -2 -1 909]‘
>>> fs == fs2
True
“““


import abc
import pickle


class Undo(metaclass=abc.ABCmeta):

    @abc.abstractmethod
    def __init__(self):
        self.__undos = []


    @abc.abstractproperty
    def can_undo(self):
        return bool(self.__undos)


    @abc.abstractmethod
    def undo(self):
        assert self.__undos “nothing left to undo“
        self.__undos.pop()(self)


    def add_undo(self undo):
        self.__undos.append(undo)


    def clear(self):        # In class Undo
        self.__undos = []


class Stack(Undo):

    def __init__(self):
        super().__init__()
        self.__stack = []


    @property
    def can_undo(self):
        return super().can_undo


    def undo(self):
        super().undo()


    def push(self item):
        self.__stack.append(item)
        self.add_undo(lambda self: self.__stack.pop())


    def pop(self):
        item = self.__stack.pop()
        self.add_undo(lambda self: self.__stack.append(item))
        return item


    def top(self):
        assert self.__stack “Stack is empty“
        return self.__stack[-1]


    def __str__(self):
        return str(self.__stack)


cla

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件    3530699  2018-03-17 22:37  Python3程序开发指南\Programming in Python 3.pdf

     文件       4814  2011-09-01 11:18  Python3程序开发指南\py30eg\Abstract.py

     文件       5545  2011-09-01 11:18  Python3程序开发指南\py30eg\Account.py

     文件       2078  2011-09-01 11:18  Python3程序开发指南\py30eg\Appliance.py

     文件       1722  2011-09-01 11:18  Python3程序开发指南\py30eg\Ascii.py

     文件       5296  2011-09-01 11:18  Python3程序开发指南\py30eg\Atomic.py

     文件       1261  2011-09-01 11:18  Python3程序开发指南\py30eg\average1_ans.py

     文件       1822  2011-09-01 11:18  Python3程序开发指南\py30eg\average2_ans.py

     文件       1338  2011-09-01 11:18  Python3程序开发指南\py30eg\awfulpoetry1_ans.py

     文件       1623  2011-09-01 11:18  Python3程序开发指南\py30eg\awfulpoetry2_ans.py

     文件       1778  2011-09-01 11:18  Python3程序开发指南\py30eg\base64image.py

     文件       5466  2011-09-01 11:18  Python3程序开发指南\py30eg\BibTeX.py

     文件       1944  2018-03-27 23:51  Python3程序开发指南\py30eg\bigdigits.py

     文件       2014  2011-09-01 11:18  Python3程序开发指南\py30eg\bigdigits_ans.py

     文件      10247  2011-09-01 11:18  Python3程序开发指南\py30eg\BikeStock.py

     文件      10396  2011-09-01 11:18  Python3程序开发指南\py30eg\BikeStock_ans.py

     文件       9501  2011-09-01 11:18  Python3程序开发指南\py30eg\BinaryRecordFile.py

     文件       5420  2011-09-01 11:18  Python3程序开发指南\py30eg\BinaryRecordFile_ans.py

     文件       1679  2011-09-01 11:18  Python3程序开发指南\py30eg\Block.py

     文件       5087  2011-09-01 11:18  Python3程序开发指南\py30eg\BlockOutput.py

     文件      15192  2011-09-01 11:18  Python3程序开发指南\py30eg\blocks.py

     文件      13355  2011-09-01 11:18  Python3程序开发指南\py30eg\bookmarks-tk.pyw

     文件      16598  2011-09-01 11:18  Python3程序开发指南\py30eg\bookmarks-tk_ans.pyw

     文件       3042  2011-09-01 11:18  Python3程序开发指南\py30eg\bookmarks.py

     文件        329  2011-09-01 11:18  Python3程序开发指南\py30eg\capture.py

     文件       5047  2011-09-01 11:18  Python3程序开发指南\py30eg\car_registration.py

     文件       6202  2011-09-01 11:18  Python3程序开发指南\py30eg\car_registration_ans.py

     文件       7204  2011-09-01 11:18  Python3程序开发指南\py30eg\car_registration_server.py

     文件       7874  2011-09-01 11:18  Python3程序开发指南\py30eg\car_registration_server_ans.py

     文件       9560  2011-09-01 11:18  Python3程序开发指南\py30eg\CharGrid.py

............此处省略137个文件信息

评论

共有 条评论