文档库 最新最全的文档下载
当前位置:文档库 › Python模块实例透析

Python模块实例透析

Python模块实例透析
Python模块实例透析

Python: collections模块实例透析

Collections模块

collections模块提供了一些python内置数据类型的扩展,比如OrderedDict,defaultdict,namedtuple,deque,counter等,简单实用,非常值得学习了解。

import collections

1. OrderedDict

顾名思义,有顺序的词典,次序不再是随机的。普通的dict不记录插入的顺序,遍历其值的时候是随机的,相反,OrderedDict记录插入的顺序,在迭代的时候可以看出差异。

遍历

print 'Regular dictionary:'

d = {}

d['a'] = 'A'

d['b'] = 'B'

d['c'] = 'C'

for key, value in d.items():

print key, value

Regular dictionary:

a A

c C

b B

print 'OrderedDict:'

d = collections.OrderedDict()

d['a'] = 'A'

d['b'] = 'B'

d['c'] = 'C'

for key, value in d.items():

print key, value

OrderedDict:

a A

b B

c C

相等比较

比较两个词典是否相等,普通词典比较只看内容,内容相同即判定相等为真;而OrderedDict同时会考虑顺序,item被添加的顺序。

print 'dict :',

d1 = {}

d1['a'] = 'A'

d1['b'] = 'B'

d1['c'] = 'C'

d2 = {}

d2['b'] = 'B'

d2['a'] = 'A'

d2['c'] = 'C'

print d1 == d2

dict : True

print 'OrderedDict:',

d1 = collections.OrderedDict()

d1['a'] = 'A'

d1['b'] = 'B'

d1['c'] = 'C'

d2 = collections.OrderedDict()

d2['b'] = 'B'

d2['a'] = 'A'

d2['c'] = 'C'

print d1 == d2

OrderedDict: False

2. defaultdict

普通词典,当你访问没有的键值时,会抛出异常,用defaultdict,可以预先给定默认值,尤其默认值是需要做累积或聚合操作的时候(比如计数)。defaultdict接受一个参数default_factory,该函数负责返回特定的值,可以自定义,也可以用list(返回[ ]) set(返回set()) 或int(返回0),直接上例子说的比较清楚。

defaultdict其实是继承dict类后。添加了__missing__(key)方法,用于处理KeyError异常。

def default_factory():

return 'This is default string value'

d = collections.defaultdict(default_factory)

print d['foo']

This is default string value

这里没有定义d['foo'],但是可以访问,并返回值。下面看点更厉害的!

list

把default_factory设定为list可以方便地把一系列键值对group起来。默认会返回空的list,下面例子把相同的键group在一起。

s = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red',

1)]

d = collections.defaultdict(list)

for k, v in s:

d[k].append(v)

# simpler and faster than d.setdefault(k, []).append(v)

d.items()

[('blue', [2, 4]), ('red', [1]), ('yellow', [1, 3])]

int

计数的时候特别方便,比如要统计每个键值出现多少次。

s = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red',

1)]

d = collections.defaultdict(int)

for k, v in s:

d[k] += 1

d.items()

[('blue', 2), ('red', 1), ('yellow', 2)]

s = 'mississippi'

d = collections.defaultdict(int)

for k in s:

d[k] += 1

d.items()

[('i', 4), ('p', 2), ('s', 4), ('m', 1)]

set

和list功能类似,但返回set(),剔除了重复元素。

s = [('red', 1), ('blue', 2), ('red', 3), ('blue', 4), ('red', 1),

('blue', 4)]

d = collections.defaultdict(set)

for k, v in s:

d[k].add(v)

d.items()

[('blue', {2, 4}), ('red', {1, 3})]

3. namedtuple

默认的tuple是用数字做索引的,而namedtuple是可以按名字访问,对fields很多,或者创建和使用场景离得比较远的情况,比较有用。

bob = ('Bob', 30, 'male')

print 'Representation:', bob

jane = ('Jane', 29, 'female')

print '\nField by index:', jane[0]

print '\nFields by index:'

for p in [ bob, jane ]:

print '%s is a %d year old %s' % p

Representation: ('Bob', 30, 'male')

Field by index: Jane

Fields by index:

Bob is a 30 year old male

Jane is a 29 year old female

由于不同的nametuple不一样,我们要单独定义,同时按name访问(依然可以按数字访问)。

# define namedtuple

Person = https://www.wendangku.net/doc/087512766.html,dtuple('Person','name age gender')

print 'Type of Person:', type(Person)

bob = Person(name='Bob', age=30, gender='male')

print '\nRepresentation:', bob

bob = Person('Bob',30,'male') # also supported

print 'Representation:', bob

jane = Person(name='Jane', age=29, gender='female')

print '\nField by name:', https://www.wendangku.net/doc/087512766.html,

print 'Field by name:', jane[0]

Type of Person:

Representation: Person(name='Bob', age=30, gender='male')

Representation: Person(name='Bob', age=30, gender='male')

Field by name: Jane

Field by name: Jane

4. deque

即double-ended queue,双向队列,支持任何一侧的add和remove操作。普通的stack和queue是deque的退化形式。

当然,deque依然是sequence,所以一些列表类似的操作也是支持的。

d = collections.deque('abcdefg')

print 'Deque:', d

print 'Length:', len(d)

print 'Left end:', d[0]

print 'Right end:', d[-1]

d.remove('c')

print 'remove(c)', d

Deque: deque(['a', 'b', 'c', 'd', 'e', 'f', 'g'])

Length: 7

Left end: a

Right end: g

remove(c) deque(['a', 'b', 'd', 'e', 'f', 'g'])

populating

往队列push元素

import collections

# Add to the right

d = collections.deque()

d.extend('abcdefg') # append with elements from the iterable

print 'extend :', d

d.append('h')

print 'append :', d

# Add to the left

d = collections.deque()

d.extendleft('abcdefg')

print 'extendleft:', d

d.appendleft('h')

print 'appendleft:', d

extend : deque(['a', 'b', 'c', 'd', 'e', 'f', 'g']) append : deque(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']) extendleft: deque(['g', 'f', 'e', 'd', 'c', 'b', 'a']) appendleft: deque(['h', 'g', 'f', 'e', 'd', 'c', 'b', 'a']) consuming

从双向队列pop元素。

print 'From the right:'

d = collections.deque('abcdefg')

while True:

try:

print d.pop(),

except IndexError:

Break

From the right:

g f e d c b a

print '\nFrom the left:'

d = collections.deque('abcdefg')

while True:

try:

print d.popleft(),

except IndexError:

break

From the left:

a b c d e f g

5. Counter

计数器,顾名思义。构造器接受以下形式,实现初始化。

print collections.Counter(['a', 'b', 'c', 'a', 'b', 'b']) print collections.Counter({'a':2, 'b':3, 'c':1})

print collections.Counter(a=2, b=3, c=1)

Counter({'b': 3, 'a': 2, 'c': 1})

Counter({'b': 3, 'a': 2, 'c': 1})

Counter({'b': 3, 'a': 2, 'c': 1})

update

c = collections.Counter()

print 'Initial :', c

c.update('abcdaab')

print 'Sequence:', c

c.update({'a':1,'d':5}) # increse not replace

print 'Dict :', c # add to a and d

Initial : Counter()

Sequence: Counter({'a': 3, 'b': 2, 'c': 1, 'd': 1})

Dict : Counter({'d': 6, 'a': 4, 'b': 2, 'c': 1})

访问

访问时候利用和字典一样的API。但对于没有的键,不会抛出异常,而是计数为0。

c = collections.Counter('abcdaab')

for letter in 'abcde':

print '%s : %d' % (letter, c[letter])

a : 3

b : 2

c : 1

d : 1

e : 0

elements

产生包含所有元素的一个迭代器。

c = collections.Counter('China')

c['z'] = 0

print c

print list(c.elements())

Counter({'a': 1, 'C': 1, 'i': 1, 'h': 1, 'n': 1, 'z': 0})

['a', 'C', 'i', 'h', 'n']

most_common()

返回前n个最常见的。

c = collections.Counter('abcdaab') c.most_common(2)

[('a', 3), ('b', 2)]

PythonWeb开发基础教程教案PDF版进店另有word版或PPT版

教案 课程名称Python Web开发基础教程课程代码 系(部) 教研室(实验室) 授课教师 职称 年月

课程 名称 Python Web开发基础教程总计: 62 学时课程 类别 专业课课程代码 授课教师学分 讲授: 44 学时 实验: 22 学时 其他:学时 授课对象教材 和主要参考资料教材:夏帮贵《Python Web开发基础教程》人民邮电出版社 2019.12 参考资料:[美] Julia Elman(茱莉亚·埃尔曼),[美] Mark Lavin(马克·拉温)著,侯荣涛,吴磊译《轻量级Django》,中国电力出版社,2016.10 课程简介 Python 因其功能强大、简单易学、开发成本低廉,已成为深受广大应用程序开发人员喜爱的程序设计语言之一。Python 被广泛应用到各种领域,从简单的文字处理,到Web 应用和游戏开发,甚至于数据分析、人工智能和航天飞机控制,Python 都能胜任。随着网络的广泛普及,Web 应用开发已成为开发人员的必备技能之一。Python 具备上百种Web 开发框架,使用Web 框架在Python 中开发Web 应用,可以极大地提高开发效率。 Django 是Python 世界中成熟的Web 框架。Django 功能全面,各模块之间紧密结合。由于Django 提供了丰富、完善的文档,因此开发人员可以快速掌握Python Web 开发知识并及时解决学习中遇到的各种问题 《Python Web开发基础教程》课程作为Python Web开发入门教学课程,讲授内容主要包括:开发环境配置、Django 配置、URL 分发、模型和数据库、视图、模板、表单、Django 工具等内容。 本课程是一门实践性非常强的课程,因此在教学过程中应注重理论紧密联系实际和加强实习环节的教学,通过实验要掌握Python Web开发方法技巧。 教学难点重点第 1 章Python Web 开发起步第 2 章Django 配置 第 3 章URL 分发 第 4 章模型和数据库 第 5 章视图 第 6 章模板 第7 章表单 第8 章Django工具 第9 章Python在线题库

黑马程序员Python教程:Python列表的6种操作实例

在使用Python的时候,经常会用到列表,列表(list)就是动态数组,相当于C++标准库的Vector。但不同的是,Python的列表可以存储多种数据类型于一身,非常强大。 下面介绍几种Python列表的常用用法: 一. 列表的创建: 使用[] 把数据包含起来,便可以创建一个列表了。 1. [ ] 可以不包含任何数据,则表示创建一个空列表 >>> name = [] 2. [ ] 也可以包含多种数据类型的数据 >>> name = ["damao", 30, "ermao"] 二. 列表的打印: 1. 使用内置函数print() 便可打印整个列表里的数据” >>> print(name) ["damao", 30, "ermao"] 2. 当然也可以打印列表的某个下标的数据: >>> print(name[0]) damao 3. 也可以分片打印列表的某段下标的数据 >>> print(name[0:2])

['damao', 30] #注意,没有打印name[2]的数据:) 4. 如果想要分别打印列表里的每个数据,只需要一个for就可以搞定: >>> for each in name: print(each) damao 30 ermao 5. 当然也可以直接打印出列表内数据的个数: >>> print(len(name)) 3 三、列表的扩展: 1. 我们可以在列表末尾追加一个任意数据类型数据: >>> name.append(["daoluan", 666]) >>> print(name) ['damao', 30, 'ermao', ['daoluan', 666]] 2. 也可以在列表末尾追加一个列表里的所有数据: >>> name.extend(["sanmao", 10, "simao"]) >>> print(name)

pyqt5 python Gui入门教程

pyqt5&python Gui入门教程(1)第一个窗口(1) 第一个窗口和代码详细注释: from PyQt5 import QtWidgets #从PyQt库导入QtWidget通用窗口类 class mywindow(QtWidgets.QWidget): #自己建一个mywindows类,以class开头,mywindows是自己的类名, #(QtWidgets.QWidget)是继承QtWidgets.QWidget类方法, # 定义类或函数不要忘记':'符号,判断语句也必须以':'结尾! def __init__(self): #def是定义函数(类方法)了,同样第二个__init__是函数名 # (self)是pyqt类方法必须要有的,代表自己,相当于java,c++中的this #其实__init__是析构函数,也就是类被创建后就会预先加载的项目 super(mywindow,self).__init__() #这里我们要重载一下mywindows同时也包含了QtWidgets.QWidget的预加载项import sys

app = QtWidgets.QApplication(sys.argv) #pyqt窗口必须在QApplication方法中使用, #要不然会报错 QWidget: Must construct a QApplication before a QWidget windows = mywindow() # 生成过一个实例(对象), windows是实例(对象)的名字,可以随便起! # mywindows()是我们上面自定义的类 windows.show() #有了实例,就得让他显示这里的show()是QWidget的方法,用来显示窗口的!sys.exit(app.exec_()) #启动事件循环 pyqt5&python Gui入门教程(2)第一个窗口(2) 上图是第一篇教程,下面的显示效果都一样,我们来看看有什么不同

从零开始:写一个简单的Python框架

你为什么想搭建一个Web框架?我想有下面几个原因: 有一个新奇的想法,将会取代其他框架。 获得一些疯狂的街头信誉。 你的问题比较独特,现有的框架不适合。 你想成为一位更好的Web开发者,你对Web框架是如何运行的感到好奇。 我将集中精力在最后一点上。这篇文章旨在描述我从写一个小型的服务框架中学到了什么,我将解释框架的设计,以及如何一步一步,一个函数一个函数的实现这个框架的。关于此项目完整的代码可以点击此链接。 我希望我的行为可以鼓励大家去尝试因为真的非常有趣,我们可以从中学到很多关于web 应用程序是如何工作的知识,而且比我想象的要容易的多。 范围 框架的功能有:请求-响应周期、身份验证、数据库访问、模板的生成等。Web开发者使用框架,因为大多数Web应用程序共享大量的相同功能,并且没必要为每个项目都重新实现这些功能。 像Rails或Django这些较大的框架做了高层次的抽象并且功能完备。这些框架经历了很长时间来完成所有这些特性,因此,我们重点完成一个微型框架。开始写代码前,我先列一下这个微型框架的功能及一些限制。 功能: 可以处理GET和POST的HTTP请求。从该WIKI中你可以了解获得关于HTTP简介。 异步的(我喜欢Python3 asyncio这个模块)。 包含简单的路由逻辑,以及参数捕获。 像其他酷的微框架一样,提供简单的用户级API。 可以处理身份验证,因为学会会非常的酷(在第2部分介绍)。 限制:

仅完成HTTP/1.1协议的一小部分:不实现transfer-encoding, http-auth, content-encoding (gzip), persistant connections(持久连接)这些功能。 响应信息中无MIME-guessing,用户将不得不手动设置。 无WSGI-只是简单的TCP连接处理。 不支持数据库。 我决定用一个小的用例来使上面的需求更具体,同样可以演示这个框架的API: 用户应该能够定义几个异步函数返回字符串或响应对象,然后用表示路由的字符串与这些函数配对,最后通过一个函数调用(start_server)开始处理请求。 有了这些设计后,我需要编码来实现这些抽象: 一个可以接受TCP连接和进度的异步函数。

实例教程1小时学会Python

实例教程:1小时学会Python 1 序言 面向读者 本文适合有经验的程序员尽快进入Python2.x世界.特别地,如果你掌握Java和Javascript,不用1小时你就可以用Python快速流畅地写有用的Python程序. Python3.x用户请参考:https://www.wendangku.net/doc/087512766.html,/yunshichen/archive/2009/04/01/55924.html (由于Django不支持python3, 所以为了你的发展潜力, 建议你学习python2.x) 为什么使用Python 假设我们有这么一项任务:简单测试局域网中的电脑是否连通.这些电脑的ip范围从192.168.0.101到192.168.0.200. 思路:用shell编程.(Linux通常是bash而Windows是批处理脚本).例如,在Windows上用ping ip 的命令依次测试各个机器并得到控制台输出.由于ping通的时候控制台文本通常是"Reply from ... " 而不通的时候文本是"time out ... " ,所以,在结果中进行字符串查找,即可知道该机器是否连通. 实现:Java代码如下: String cm d="cm d.exe ping "; String ipprefix="192.168.10."; int begin=101; int end=200; Process p=null; for(int i=begin;i

Python操作Mysql实例代码教程

本文介绍了Python操作MYSQL、执行SQL语句、获取结果集、遍历结果集、取得某个字段、获取表字段名、将图片插入数据库、执行事务等各种代码实例和详细介绍,代码居多,是一桌丰盛唯美的代码大餐。 实例1、取得MYSQL的版本 在windows环境下安装mysql模块用于python开发,请见我的另一篇文章: MySQL-python Windows下EXE安装文件下载 # -*- coding: UTF-8 -*- #安装MYSQL DB for python import MySQLdb as mdb con = None try: #连接mysql的方法:connect('ip','user','password','dbname') con = mdb.connect('localhost', 'root', 'root', 'test'); #所有的查询,都在连接con的一个模块cursor上面运行的 cur = con.cursor() #执行一个查询 cur.execute("SELECT VERSION()") #取得上个查询的结果,是单个结果 data = cur.fetchone() print "Database version : %s " % data finally: if con: #无论如何,连接记得关闭 con.close() 执行结果: Database version : 5.5.25 实例2、创建一个表并且插入数据 主要还是在cursor上面执行execute方法来进行,请见源码: # -*- coding: UTF-8 -*- # 来源于https://www.wendangku.net/doc/087512766.html,总结整理 import MySQLdb as mdb import sys

写你的第一个Python Django实例

写你的第一个Django应用 | 第一部分 ?原文地址:https://www.wendangku.net/doc/087512766.html,/en/dev/intro/tutorial01/ ?Creating a project ?The development server ?Database setup ?Creating models ?Activating models ?Playing with the API 从示例学习。 开始之前,请确保 Django 已经安装完毕。先运行 Python,若正常,再输入 import django。如果运行无误,则说明 Django 已成功安装。 $ python Python 2.5.2 (r252:60911, Feb 22 2008, 07:57:53) [GCC 4.0.1 (Apple Computer, Inc. build 5363)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import django >>> 新建项目(Project) 你可以将你的 project 放置在任何目录下,从终端中,用 cd 命令进入理想的目录,然后运行命令,django-admin.py startproject mysite,这将创建一个名为 mysite 的项目,在其文件夹中,还自动生成了 4 个文件: ?init.py ?manage.py ?settings.py ?urls.py 这些文件的作用是: ?init.py: 这是一个空文件,指示这个目录是 Python 的一个 package。 ?manage.py: 一个命令行工具,可以用来对 Django 项目进行各种操作。 ?settings.py: Django 项目的设置文件。 ?urls.py: Django 项目 URL 声明文件;网站的 "目录"。 运行本地服务器 Django 本身包含一个用纯 Python 语言编写的轻量级服务器,便于快速开发你的项目,而不用花费过多精力设置服务器,比如 Apache,除非你准备好正式发布网站。 在 mysite 目录中,如果你紧跟着教程到此,可以直接运行命令 python manage.py

K3Cloud_python开发例子

#引入clr运行库 import clr #添加对cloud插件开发的常用组件的引用 clr.AddReference('Kingdee.BOS') clr.AddReference('Kingdee.BOS.Core') clr.AddReference('Kingdee.K3.Core') clr.AddReference('LUTAI.K3.BOS.Core') clr.AddReference('Kingdee.BOS.ServiceHelper') #导入cloud基础库中的常用实体对象(分命名空间导入,不会递归导入) from Kingdee.BOS import * from Kingdee.BOS.Util import * from Kingdee.BOS.Core import * from Kingdee.BOS.Core.DynamicForm import * from Kingdee.BOS.Core.DynamicForm.PlugIn import * from Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel import * from Kingdee.BOS.Core.Interaction import * from Kingdee.BOS.Core.Metadata import * from Kingdee.BOS.Core.Metadata.EntityElement import * from Kingdee.BOS.Core.Metadata.FieldElement import * from Kingdee.BOS.ServiceHelper import * from Kingdee.K3.Core import * from LUTAI.K3.BOS.Core import * from LUTAI.K3.BOS.Core.Metadata.Operation import * from System import * from System.Collections.Generic import * #这里是重载cloud插件模型的按钮点击事件,其它事件的重写也一样 def ButtonClick(e): if e.Key=="FOK": #这里是实例化C#中的实体对象 selParams = BatchEditBomOpParams(); #这里就是取表单模型里某字段的模型对象了 selFormIdField = this.View.BillBusinessInfo.GetField("FSelFormId"); mtrlFieldKeyField = this.View.BillBusinessInfo.GetField("FMtrlIdFieldKey"); auxPropIdFieldKeyField = this.View.BillBusinessInfo.GetField("FAuxPropIdFieldKey"); bomIdFieldKeyField = this.View.BillBusinessInfo.GetField("FBomIdFieldKey"); #从模型取值赋值给C#实体对象 selParams.FormId=selFormIdField.RefIDDynamicProperty.GetValue(this.Mo del.DataObject);

哪有python实例教程网盘下载

哪有python实例教程网盘下载 Python是用来编写应用程序的高级编程语言,为我们提供了非常完善的基础代码库,覆盖了网络、文件、GUI、数据库、文本等,被称作“内置电池”。用Python开发,许多功能使用现成的即可。因此很多人都想学习它,但学习之前还要了解软件使用方法。书上找不到的python实例教程肯定是你需 要的。 千锋Python基础教程:https://www.wendangku.net/doc/087512766.html,/s/1qYTZiNE Python课程教学高手晋级视频总目录: https://www.wendangku.net/doc/087512766.html,/s/1hrXwY8k Python课程windows知识点:https://www.wendangku.net/doc/087512766.html,/s/1kVcaH3x Python课程linux知识点:https://www.wendangku.net/doc/087512766.html,/s/1i4VZh5b Python课程web知识点:https://www.wendangku.net/doc/087512766.html,/s/1jIMdU2i Python课程机器学习:https://www.wendangku.net/doc/087512766.html,/s/1o8qNB8Q Python课程-树莓派设备:https://www.wendangku.net/doc/087512766.html,/s/1slFee2T

创始人给Python的定位是“优雅”、“明确”、“简单”,所以Python程序看上去总是简单易懂。初学者学Python,不但入门容易,而且深入学习就可以编写非常复杂的程序。反正,Python的哲学就是简单优雅,尽量写容易看明白的代码,尽量写少的代码。 最后,给自家公司打个广告,如果学Python,一定要来千锋教育。 千锋超前沿、颠覆性Python课程体系,历时一年精心策划,源于清华来自微软的的首席培训官全情参与。 通过前期企业调研,千锋Python人工智能培训将潮流技术完美融入课程体系,实用性强,不掺杂无用讲解,只为给学员最极致的教学体验。总共23周,让你历经行业小白到技术牛人的进阶!报名就送树莓派哟!

《Python程序设计案例教程——从入门到机器学习(微课版)》

《Python应用程序设计》课程教学大纲 一、课程基本信息 中文名称:Python应用程序设计 英文名称:Python Program 学分:2 学时数:32理论学时 二、课程性质、目的与要求 本课程是计算机科学与技术、软件工程、物联网工程、信息与计算科学、电子信息工程、通信工程、自动化、光电信息科学与工程的专业选修课程,在大三上学期开设。课程采用理论与实践应用相结合的教学方式,通过学习Python语法基础、图形用户界面设计等基础知识,掌握Python 在网络编程、数据分析、机器学习与人工智能等领域的应用,能够迅速适应未来的工作与学习。 学生在学习本课程时,应在理解编程语法和编程思想的基础之上,通过课内外多花时间上机编写程序题,实现编程能力的提高。通过本课程的学习,使学生对Python系统有一个全面深入的了解,并能应用Python语言进行实际项目的开发和设计。 三、先修要求 修读条件: 学生需要掌握基础的软件编程语言,了解计算机网络和数据库的基础知识,具备独立开发能力。 先修课程: 无 四、课程基本内容 (一)Python语言快速入门(2学时) 1.教学内容 (1)Python的发展、版本、应用领域和基本特点。(0.5学时) (2)Python的开发环境配置。(重点)(0. 5学时) (3)Python程序简单示例。(重点)(1学时) 2.教学目的及要求

(1)了解Python的发展、版本、应用领域和基本特点。 (2)熟练掌握Python开发环境的配置。 (二)Python语法基础(4学时) 1.教学内容 (1)基本数据类型,列表、元组和字典。(重点)(1学时)(2)顺序语句、条件判断语句。(重点)(1学时) (3)循环语句(重点、难点)(1学时) (4)函数、常用内置函数(重点、难点)(1学时) 2.教学目的及要求 (1)掌握Python的基本程序结构、数据类型。 (2)掌握Python输入输出。 (3)理解Python的变量和动态数据类型。 (4)掌握条件判断结构与应用。 (5)掌握循环结构与应用。 (1)掌握函数定义、函数调用,理解变量作用域。 (三)类与模块(2学时) 1.教学内容 (1)类的定义与类继承。(重点、难点)(1学时) (2)模块的导入和使用、常用Python模块。(重点)(1学时)2.教学目的及要求 (1)掌握类的定义。 (2)掌握模块应用。 (四)图形用户界面设计(4学时) 1.教学内容 (1)窗体容器和组件(重点)(2学时) (2)界面布局管理(1学时) (3)文本框组件(1学时) 2.教学目的及要求 (1)掌握窗体程序的设计方法

Python编程实例

目的:用一个实例总结学习到的with语句,函数,列表推导,集合,排序,字符分割等内容 要求:分别以james,julie,mikey,sarah四个学生的名字建立文本文件,分别存储各自的成绩,时间格式都精确为分秒,时间越短成绩越好,分别输出每 个学生的无重复的前三个最好成绩,且分秒的分隔符要统一为“.” 数据准备:分别建立四个文本文件 james.txt 2-34,3:21,2.34,2.45,3.01,2:01,2:01,3:10,2-22 julie.txt 2.59,2.11,2:11,2:23,3-10,2-23,3:10,3.21,3-21 mikey.txt 2:22,3.01,3:01,3.02,3:02,3.02,3:22,2.49,2:38 sarah.txt 2:58,2.58,2:39,2-25,2-55,2:54,2.18,2:55,2:55 import os os.chdir('C:\Python33\HeadFirstPython\hfpy_code\chapter5') #将工作空间修改为文 件所在的目录 #定义函数get_filedata从文件中取值def get_filedata(filename): try: with open(filename) as f: #with语句打开和自动关闭文件 data=f.readline() #从文件中逐行读取字符 return (data.strip().split(',')) #将字符间的空格清除后,用逗号分隔字符 except IOError as ioerr: print ('File Error' + str(ioerr)) #异常处理,打印错误 return (None)#定义函数modify_time_format将所有文件中的时分表达方式统一为“分.秒”def modify_time_format(time_string): if"-"in time_string: splitter="-" elif":"in time_string: splitter=":" else: splitter="." (mins, secs)=time_string.split(splitter) #用分隔符splitter分隔字符后分别存入mins和secs return (mins+ '.' +secs)#定义函数get_prev_three返回文件中排名前三的不重复的时间成绩 def get_prev_three(filename): new_list=[modify_time_format(each_t) for each_t in get_filedata(filename)] #采用列表推导将统一时分表达方式后的记录生成新的列表 delete_repetition=set(new_list) #采 用集合set函数删除新列表中重复项,并生成新的集合 in_order=sorted(delete_repetition) #采 用复制排序sorted函数对无重复性的新集合进行排序

相关文档
相关文档 最新文档