资源简介
是《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
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-01-08 01:18 py30eg\
文件 4814 2011-09-01 11:18 py30eg\Abstract.py
文件 5545 2011-09-01 11:18 py30eg\Account.py
文件 2078 2011-09-01 11:18 py30eg\Appliance.py
文件 1722 2011-09-01 11:18 py30eg\Ascii.py
文件 5296 2011-09-01 11:18 py30eg\Atomic.py
文件 5466 2011-09-01 11:18 py30eg\BibTeX.py
文件 10247 2011-09-01 11:18 py30eg\BikeStock.py
文件 10396 2011-09-01 11:18 py30eg\BikeStock_ans.py
文件 9501 2011-09-01 11:18 py30eg\BinaryRecordFile.py
文件 5420 2011-09-01 11:18 py30eg\BinaryRecordFile_ans.py
文件 1679 2011-09-01 11:18 py30eg\Block.py
文件 5087 2011-09-01 11:18 py30eg\BlockOutput.py
文件 9560 2011-09-01 11:18 py30eg\CharGrid.py
文件 1788 2011-09-01 11:18 py30eg\Circle.py
文件 5224 2011-09-01 11:18 py30eg\Console.py
文件 1824 2011-09-01 11:18 py30eg\Const.py
文件 4694 2011-09-01 11:18 py30eg\ExternalStorage.py
文件 4912 2011-09-01 11:18 py30eg\FuzzyBool.py
文件 5894 2011-09-01 11:18 py30eg\FuzzyBoolAlt.py
目录 0 2018-01-08 01:18 py30eg\Graphics\
文件 351 2011-09-01 11:18 py30eg\Graphics\Bmp.py
文件 357 2011-09-01 11:18 py30eg\Graphics\Jpeg.py
文件 368 2011-09-01 11:18 py30eg\Graphics\Png.py
文件 357 2011-09-01 11:18 py30eg\Graphics\Tiff.py
目录 0 2018-01-08 01:18 py30eg\Graphics\Vector\
文件 407 2011-09-01 11:18 py30eg\Graphics\Vector\Eps.py
文件 401 2011-09-01 11:18 py30eg\Graphics\Vector\Svg.py
文件 26 2011-09-01 11:18 py30eg\Graphics\Vector\__init__.py
文件 351 2011-09-01 11:18 py30eg\Graphics\Xpm.py
文件 49 2011-09-01 11:18 py30eg\Graphics\__init__.py
............此处省略130个文件信息
相关资源
- Instant Pygame for Python Game Development How
- Biopython Tutorial
- Think Python 2nd
- 一个小小的表白程序(python)
- Python课堂笔记(高淇400集第一季)
- 二级考试python试题12套(包括选择题和
- pywin32_python3.6_64位
- python+ selenium教程
- PycURL(Windows7/Win32)Python2.7安装包 P
- 英文原版-Scientific Computing with Python
- 7.图像风格迁移 基于深度学习 pyt
- 基于Python的学生管理系统
- A Byte of Python(简明Python教程)(第
- Python实例174946
- Python 人脸识别
- Python 人事管理系统
- 基于python-flask的个人博客系统
- 计算机视觉应用开发流程
- python 调用sftp断点续传文件
- python socket游戏
- 基于Python爬虫爬取天气预报信息
- python函数编程和讲解
- Python开发的个人博客
- 基于python的三层神经网络模型搭建
- python实现自动操作windows应用
- python人脸识别(opencv)
- python 绘图(方形、线条、圆形)
- python疫情卡UN管控
- python 连连看小游戏源码
- 基于PyQt5的视频播放器设计
评论
共有 条评论