欢迎光临
免费的PDF电子书下载网站

Python项目案例开发从入门到实战——爬虫、游戏和机器学习 PDF下载

编辑推荐

本书案例具有实用性,如校园网搜索引擎、小小翻译器、抓取百度图片这些爬虫案例略加修改可以应用实际项目中;还有通过微信通信协议开发微信机器人,机器学习的文本分类、基于卷积神经网络的手写体识别等案例,另外是一些大家耳熟能详的游戏案例,比如连连看、推箱子、中国象棋、网络五子棋、两人麻将、人物拼图和飞机大战游戏等,让你对枯燥的Python语言学习充满乐趣 ;

内容简介

本书以Python 3.5为编程环境,从基本的程序设计思想入手,逐步展开Python语言教学,是一本面向广大编程学习者的程序设计类图书。本书以案例带动知识点的讲解,将Python知识点分解到各个不同的案例,每个案例各有侧重点,同时展示实际项目的设计思想和设计理念,使读者可以举一反三。   本书案例具有实用性,例如校园网搜索引擎、小小翻译器、抓取百度图片这些爬虫案例略加修改可以应用到实际项目中;还有通过微信通信协议开发微信机器人、机器学习的文本分类、基于卷积神经网络的手写体识别等案例;另外是一些大家耳熟能详的游戏案例,例如连连看、推箱子、中国象棋、网络五子棋、两人麻将、人物拼图和飞机大战等游戏。通过本书,读者将掌握Python编程技术和技巧,学会面向对象的设计方法,了解程序设计的所有相关内容。本书不仅为读者列出了完整的代码,同时对所有的源代码都进行了非常详细的解释,通俗易懂、图文并茂。扫描每章提供的二维码可观看知识点的视频讲解。   本书适用于Python语言学习者、程序设计人员和游戏编程爱好者。

作者简介

暂无

Python项目案例开发从入门到实战——爬虫、游戏和机器学习 PDF下载

目录

 ;第1章 ; ; ; ; Python基础知识 ; ;  ;1
1.1 ; Python语言简介 ; ;  ;1
1.2 ; Python语法基础 ; ;  ;2
1.2.1 ; Python数据类型 ; ;  ;2
1.2.2 ; 序列数据结构 ; ;  ;4
1.2.3 ; Python控制语句 ; ;  ;12
1.2.4 ; Python函数与模块 ; ;  ;18
1.3 ; Python面向对象设计 ; ;  ;22
1.3.1 ; 定义和使用类 ; ;  ;22
1.3.2 ; 构造函数 ; ;  ;23
1.3.3 ; 析构函数 ; ;  ;24
1.3.4 ; 实例属性和类属性 ; ;  ;24
1.3.5 ; 私有成员与公有成员 ; ;  ;25
1.3.6 ; 方法 ; ;  ;26
1.3.7 ; 类的继承 ; ;  ;27
1.3.8 ; 多态 ; ;  ;29
1.3.9 ; 面向对象应用案例——扑克牌发牌程序 ; ;  ;31
1.4 ; Python图形界面设计 ; ;  ;34
1.4.1 ; 创建Windows窗口 ; ;  ;35
1.4.2 ; 几何布局管理器 ; ;  ;35
1.4.3 ; Tkinter组件 ; ;  ;39
1.4.4 ; Tkinter字体 ; ;  ;49
1.4.5 ; Python事件处理 ; ;  ;51
1.4.6 ; 图形界面设计应用案例——开发猜数字游戏 ; ;  55
1.5  Python文件的使用    57
1.5.1  打开/建立文件    57
1.5.2  读取文本文件    59
1.5.3  写文本文件    60
1.5.4  文件内移动    62
1.5.5  文件的关闭    63
1.5.6  二进制文件的读/写    64
1.6  Python的第三方库    66
  第2章     序列应用——猜单词游戏    67
2.1  猜单词游戏功能介绍    67
2.2  程序设计的思路    67
2.3  关键技术——random模块    68
2.4  程序设计的步骤    71
  第3章     数据库应用——智力问答测试    73
3.1  智力问答测试功能介绍    73
3.2  程序设计的思路    73
3.3  关键技术    74
3.3.1  访问数据库的步骤    74
3.3.2  创建数据库和表    75
3.3.3  数据库的插入、更新和删除操作    76
3.3.4  数据库表的查询操作    77
3.3.5  数据库使用实例——学生通讯录    77
3.4  程序设计的步骤    80
3.4.1  生成试题库    80
3.4.2  读取试题信息    81
3.4.3  界面和逻辑设计    81
  第4章     调用百度API应用——小小翻译器    83
4.1  小小翻译器功能介绍    83
4.2  程序设计的思路    83
4.3  关键技术    84
4.3.1  urllib库简介    84
4.3.2  urllib库的基本使用    84
4.4  程序设计的步骤    90
4.4.1  设计界面    90
4.4.2  使用百度翻译开放平台API    90
  第5章     爬虫应用——校园网搜索引擎    95
5.1  校园网搜索引擎功能分析    95
5.2  校园网搜索引擎系统设计    95
5.3  关键技术    98
5.3.1  正则表达式    98
5.3.2  中文分词    103
5.3.3  安装和使用jieba    103
5.3.4  为jieba添加自定义词典    104
5.3.5  文本分类的关键词提取    105
5.3.6  deque    106
5.4  程序设计的步骤    107
5.4.1  信息采集模块——网络爬虫的实现    107
5.4.2  索引模块——建立倒排词表    111
5.4.3  网页排名和搜索模块    113
  第6章     爬虫应用——抓取百度图片    116
6.1  程序功能介绍    116
6.2  程序设计的思路    116
6.3  关键技术    117
6.3.1  图片文件下载到本地    117
6.3.2  爬取指定网页中的图片    117
6.3.3  BeautifulSoup库概述    119
6.3.4  用BeautifulSoup库操作解析HTML文档树    121
6.3.5  requests库的使用    125
6.4  程序设计的步骤    133
6.4.1  分析网页源代码和网页结构    133
6.4.2  设计代码    136
  第7章     itchat应用——微信机器人    139
7.1  itchat功能介绍    139
7.2  程序设计的思路    140
7.3  关键技术    140
7.3.1  安装itchat    140
7.3.2  itchat的登录微信    140
7.3.3  itchat的消息类型    141
7.3.4  itchat回复消息    143
7.3.5  itchat获取账号    145
7.3.6  itchat的一些简单应用    147
7.3.7  Python调用图灵机器人API实现简单的人机交互    150
7.4  程序设计的步骤    152
7.5  开发消息同步机器人    153
  第8章     微信网页版协议应用——微信机器人    155
8.1  微信网页版机器人功能介绍    155
8.2  微信网页版机器人设计思路    155
8.2.1  分析微信网页版API    155
8.2.2  API汇总    158
8.2.3  其他说明    164
8.3  程序设计的步骤    166
8.3.1  微信网页版的运行流程    166
8.3.2  程序目录    167
8.3.3  微信网页版运行代码的实现    167
8.4  扩展功能    170
8.4.1  自动回复    170
8.4.2  群发消息、定时发送消息、好友状态检测    173
8.4.3  自动邀请好友加入群聊    175
  第9章     图像处理——生成二维码和验证码    178
9.1  二维码介绍    178
9.2  二维码生成和解析关键技术    179
9.2.1  qrcode库的使用    179
9.2.2  PIL库的使用    182
9.3  二维码生成和解析程序设计的步骤    184
9.3.1  生成带有图标的二维码    184
9.3.2  Python解析二维码图片    186
9.4  用Python生成验证码图片    186
  第10章     益智游戏——连连看游戏    189
10.1  连连看游戏介绍    189
10.2  程序设计的思路    190
10.3  关键技术    200
10.3.1  图形绘制——Tinker的Canvas组件    200
10.3.2  Canvas上的图形对象    200
10.4  程序设计的步骤    210
  第11章     益智游戏——推箱子游戏    215
11.1  推箱子游戏介绍    215
11.2  程序设计的思路    216
11.3  关键技术    217
11.4  程序设计的步骤    218
  第12章     娱乐游戏——两人麻将游戏    224
12.1  麻将游戏介绍    224
12.1.1  麻将术语    224
12.1.2  牌数    224
12.2  两人麻将游戏设计的思路    225
12.2.1  素材图片    225
12.2.2  游戏的逻辑实现    226
12.2.3  碰/吃牌的判断    226
12.2.4  和牌算法    227
12.2.5  实现计算机智能出牌    231
12.3  关键技术    233
12.3.1  声音的播放    233
12.3.2  返回对应位置的组件    233
12.3.3  对保存麻将牌的列表排序    234
12.4  两人麻将游戏设计的步骤    235
12.4.1  设计麻将牌类    235
12.4.2  设计游戏主程序    237
  第13章     网络编程案例——基于TCP的在线聊天程序    247
13.1  基于TCP的在线聊天程序简介    247
13.2  关键技术    247
13.2.1  互联网TCP/IP协议    247
13.2.2  IP协议和端口    248
13.2.3  TCP协议和UDP协议    249
13.2.4  Socket    249
13.2.5  多线程编程    254
13.3  在线聊天程序设计的步骤    256
13.3.1  在线聊天程序的服务器端    256
13.3.2  在线聊天程序的客户端    259
  第14章     网络通信案例——基于UDP的网络五子棋
游戏    263
14.1  网络五子棋游戏简介    263
14.2  五子棋游戏的设计思想    264
14.3  关键技术    267
14.3.1  UDP编程    267
14.3.2  自定义网络五子棋游戏的通信协议    269
14.4  网络五子棋游戏程序设计的步骤    271
14.4.1  服务器端程序设计的步骤    271
14.4.2  客户端程序设计的步骤    276

  第15章     益智游戏——中国象棋    281
15.1  中国象棋介绍    281
15.2  关键技术    282
15.3  中国象棋的设计思路    284
15.4  中国象棋实现的步骤    287
  第16章     娱乐游戏——人物拼图游戏    297
16.1  人物拼图游戏介绍    297
16.2  程序设计的思路    298
16.3  关键技术    298
16.3.1  复制和粘贴图像区域    298
16.3.2  调整尺寸和旋转    298
16.3.3  转换成灰度图像    299
16.3.4  对像素进行操作    300
16.4  程序设计的步骤    300
16.4.1  Python处理图片切割    300
16.4.2  游戏的逻辑实现    302
  第17章     基于Pygame的游戏设计    306
17.1  Pygame基础知识    306
17.1.1  安装Pygame库    306
17.1.2  Pygame的模块    306
17.2  Pygame的使用    309
17.2.1  Pygame开发游戏的主要流程    309
17.2.2  Pygame的图像/图形绘制    311
17.2.3  Pygame的键盘和鼠标事件的处理    314
17.2.4  Pygame的字体使用    319
17.2.5  Pygame的声音播放    320
17.2.6  Pygame的精灵使用    321
17.3  基于Pygame设计贪吃蛇游戏    326
17.4  基于Pygame设计飞机大战游戏    333
17.4.1  游戏角色    333
17.4.2  游戏界面显示    336
17.4.3  游戏的逻辑实现    338
  第18章     机器学习案例——基于朴素贝叶斯算法的
文本分类    343
18.1  文本分类功能介绍    343
18.2  程序设计的思路    343
18.3  关键技术    344
18.3.1  贝叶斯算法的理论基础    344
18.3.2  朴素贝叶斯分类    346
18.3.3  使用Python进行文本分类    348
18.4  程序设计的步骤    348
18.4.1  收集训练数据    348
18.4.2  准备数据    349
18.4.3  分析数据    349
18.4.4  训练算法    350
18.4.5  测试算法并改进    353
18.4.6  使用算法进行文本分类    354
18.5  使用朴素贝叶斯分类算法过滤垃圾邮件    355
18.5.1  收集训练数据    355
18.5.2  将文本文件解析为词向量    356
18.5.3  使用朴素贝叶斯算法进行邮件分类    357
18.5.4  改进算法    359
18.6  使用Scikit-Learn库进行文本分类    360
18.6.1  文本分类常用的类和函数    360
18.6.2  案例实现    363
  第19章     深度学习案例——基于卷积神经网络的
手写体识别    366
19.1  手写体识别案例需求    366
19.2  深度学习的概念及关键技术    366
19.2.1  神经网络模型    366
19.2.2  深度学习之卷积神经网络    367
19.3  Python深度学习库——Keras    372
19.3.1  Keras的安装    372
19.3.2  Keras的网络层    372
19.3.3  用Keras构建神经网络    375
19.4  程序设计的思路    376
19.5  程序设计的步骤    377
19.5.1  MNIST数据集    377
19.5.2  手写体识别案例实现    378
19.5.3  预测自己手写图像    382

  第20章     词云实战——爬取豆瓣影评生成词云    383
20.1  功能介绍    383
20.2  程序设计的思路    384
20.3  关键技术    385
20.3.1  安装WordCloud    385
20.3.2  使用WordCloud    385
20.4  程序设计的步骤    389
  参考文献         397


前沿

Python语言从20世纪90年代初诞生至今,逐渐被广泛应用于处理系统管理任务和科学计算,是最受欢迎的程序设计语言之一。
  学习编程是工程专业学生学习的重要部分,除了直接应用外,学习编程是了解计算机科学本质的方法。计算机科学对现代社会产生了毋庸置疑的影响。Python是新兴的程序设计语言,是一种解释型、面向对象、动态数据类型的高级程序设计语言。由于Python语言简洁、易读并且可扩展,在国外用Python做科学计算的研究机构日益增多,最近几年其社会需求逐渐增加,许多国内高校纷纷开设Python程序设计课程。本书编者长期从事程序设计语言的教学与应用开发,了解在学习编程的时候什么样的书能够提高Python开发能力,以最少的时间投入得到最快的实际应用。
  本书内容:
  第1章是Python基础知识,主要讲解Python的基础语法和面向对象编程基础、图形界面设计、Python文件的使用、Python的第三方库等知识,读者可以轻松掌握。
  从第2章开始是实用项目案例开发,综合应用前面所学的知识,并且每章都有突出的新知识点,例如侧重数据库应用的案例“智力问答测试”、应用爬虫技术开发的案例“校园网搜索引擎”、应用itchat开发的案例“微信机器人”、机器学习案例“基于朴素贝叶斯算法的文本分类”、深度学习案例“基于卷积神经网络的手写体识别”等,还有经典的、大家耳熟能详的游戏案例,例如连连看、推箱子、中国象棋、两人麻将、人物拼图、网络五子棋、飞机大战等。
  本书特点:
  (1)Python程序设计涉及的范围非常广泛,本书内容的编排并不求全、求深,而是考虑零基础读者的接受能力,语言的语法介绍以够用、实用为原则,选择Python中必备、实用的知识进行讲解,强化对程序思维能力的培养。
  (2)案例选取贴近生活,有助于提高读者的学习兴趣。
  (3)书中每个案例均提供了详细的设计思路、关键技术分析以及具体的解决方案。
  需要说明的是,学习编程是一个实践的过程,而不仅仅是看书、看资料,亲自动手编写、调试程序才是至关重要的。通过实际的编程和积极的思考,读者可以很快地掌握许多宝贵的编程经验,这种编程经验对开发者来说尤其不可或缺。
  本书由郑秋生和夏敏捷(中原工学院)主持编写,吴婷(中原工学院)编写第6章,韩云飞(中原工学院)编写第8章,周延萍编写第9、10章,宋宝卫(郑州轻工业学院)编写第11~15章,陈海蕊(中原工学院)编写第16、17章,高艳霞(中原工学院)编写第18章,李娟(中原工学院)编写第19章,郑秋生编写第20章,其余章节由夏敏捷编写。在本书的编写过程中,为确保内容的正确性,参阅了很多资料,并且得到了中原工学院的教材资助和资深Python程序员的支持,在此谨向他们表示衷心的感谢。本书的学习资源可以扫描封底课件二维码获取。由于编者水平有限,书中难免有不足之处,敬请广大读者批评指正,在此表示感谢。
  
                                                       编  者
                           2018年9月

免费在线读

数据库应用——智力问答测试
3.1  智力问答测试功能介绍
  智力问答测试,内容涉及历史、经济、风情、民俗、地理、人文等古今中外各方面的知识,让玩家在轻松娱乐、益智、搞笑的同时不知不觉地增长知识。在答题过程中对做对、做错进行实时跟踪,测试完成后能根据玩家的答题情况给出成绩。程序运行界面如图3-1所示。

图3-1  智力问答测试程序的运行界面
3.2  程序设计的思路
  程序使用了一个SQLite试题库test2.db,其中每个智力问答由题目、4个选项和正确答案组成(question、Answer_A、Answer_B、Answer_C、Answer_D、right_Answer)。在测试前,程序从试题库test2.db读取试题信息,存储到values列表中。在测试时,顺序从values列表读出题目显示在GUI界面中供用户答题。在进行界面设计时,智力问答题目是标签控件,4个选项是单选按钮控件,在“下一题”按钮单击事件中实现题目切换和对错判断,如果正确则得分score加10分,错误不加分,并判断用户是否做完。在“结果”按钮单击事件中实现得分score的显示。
3.3  关键技术
  从Python2.5版本以上就内置了SQLite3,所以在Python中使用SQLite不需要安装任何东西,直接使用。SQLite3数据库使用SQL语言。SQLite作为后端数据库,可以制作有数据存储需求的工具。Python标准库中的SQLite3提供该数据库的接口。
3.3.1  访问数据库的步骤
  从Python2.5开始,SQLite3就成了Python的标准模块,这也是Python中的唯一一个数据库接口类模块,大大方便了用户使用Python SQLite数据库开发小型数据库应用系统。
  Python的数据库模块有统一的接口标准,所以数据库操作有统一的模式,操作数据库SQLite3主要分为以下几步:
  导入Python SQLite数据库模块
  Python标准库中带有sqlite3模块,可直接导入:
  
     import sqlite3
  
  建立数据库连接,返回Connection对象
  使用数据库模块的connect()函数建立数据库连接,返回连接对象con。
  
     con=sqlite3.connect(connectstring) #连接到数据库,返回sqlite3.connection对象
  
  说明:connectstring是连接字符串。对于不同的数据库连接对象,其连接字符串的格式不同,sqlite的连接字符串为数据库的文件名,例如“E: est.db”。如果指定连接字符串为memory,则可创建一个内存数据库。例如:
  
     import sqlite3
     con=sqlite3.connect("E:\test.db")
  
  如果E盘下的test.db存在,则打开数据库;否则在该路径下创建数据库test.db并打开。
  创建游标对象
  使用游标对象能够灵活地对从表中检索出的数据进行操作,就本质而言,游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。
  调用con.cursor()创建游标对象cur:
  
     cur=con.cursor()         #创建游标对象
  
  使用Cursor对象的execute()方法执行SQL命令返回结果集
  调用cur.execute()、cur.executemany()、cur.executescript()方法查询数据库。
* cur.execute(sql):执行SQL语句。
* cur.execute(sql, parameters):执行带参数的SQL语句。
* cur.executemany(sql, seq_of_pqrameters):根据参数执行多次SQL语句。
* cur.executescript(sql_script):执行SQL脚本。
  例如创建一个表category。
  
     cur.execute("create table category(id primary key, sort, name)")
  
  此时将创建一个包含3个字段id、sort和name的表category。下面向表中插入记录:
  
     cur.execute("insert into category values(1, 1, computer)")
  
  在SQL语句字符串中可以使用占位符“?”表示参数,传递的参数使用元组。例如:
  
     cur.execute("insert into category values (?, ?,?) ",(2, 3, literature))
  
  获取游标的查询结果集
  调用cur.fetchall()、cur.fetchone()、cur.fetchmany()返回查询结果。
* cur.fetchone():返回结果集的下一行(Row对象);无数据时返回None。
* cur.fetchall():返回结果集的剩余行(Row对象列表),无数据时返回空List。
* cur.fetchmany():返回结果集的多行(Row对象列表),无数据时返回空List。
  例如:
  
     cur.execute("select * from catagory")   
     print(cur.fetchall())      #提取查询到的数据
  
  返回结果如下:
  
     [(1, 1, computer), (2, 2, literature)]
  
  如果使用cur.fetchone(),则首先返回列表中的第1项,再次使用,返回第2项,依次进行。
  用户也可以直接使用循环输出结果,例如:
  
     for row in cur.execute("select * from catagory"):
        print(row[0],row[1])
  
  数据库的提交和回滚
  根据数据库事物隔离级别的不同,可以提交或回滚。
* con.commit():事务提交。
* con.rollback():事务回滚。
  关闭Cursor对象和Connection对象
  最后需要关闭打开的Cursor对象和Connection对象。
* cur.close():关闭 Cursor对象。
* con.close():关闭Connection对象。
3.3.2  创建数据库和表
  3-1  创建数据库sales,并在其中创建表book,表中包含3列,即id、price和name,其中id为主键(primary key)。
  
     #导入Python SQLite数据库模块
     import sqlite3
     #创建SQLite数据库
     con=sqlite3.connect("E:sales.db")
     #创建表book,包含3列,即id(主键)、price和name
     con.execute("create table book(id primary key, price, name)")
  
  说明:Connection对象的execute()方法是Cursor对象对应方法的快捷方式,系统会创建一个临时Cursor对象,然后调用对应的方法,并返回Cursor对象。
3.3.3  数据库的插入、更新和删除操作
  在数据库表中插入、更新、删除记录的一般步骤如下:
  (1)建立数据库连接。
  (2)创建游标对象cur,使用cur.execute(sql)执行SQL的insert、update、delete等语句完成数据库记录的插入、更新、删除操作,并根据返回值判断操作结果。
  (3)提交操作。
  (4)关闭数据库。
  3-2  数据库表记录的插入、更新和删除操作。
  
     import sqlite3
     books=[("021",25,"大学计算机"),("022",30, "大学英语"),("023",18, "艺术欣赏"),     ( "024",35, "高级语言程序设计")]
     #打开数据库
     Con=sqlite3.connect("E:sales.db")
     #创建游标对象
     Cur=Con.cursor()
     #插入一行数据
     Cur.execute("insert into book(id,price,name) values(01,33,大学计算机        多媒体)")
     Cur.execute("insert into book(id,price,name) values(?,?,?) " ,("002",28,     "数据库基础"))
     #插入多行数据
     Cur.executemany("insert into book(id,price,name) values (?,?,?) ",books)
     #修改一行数据
     Cur.execute("Update book set price=? where name=? ",(25,"大学英语"))
     #删除一行数据
     n=Cur.execute("delete from book where price=?",(25,))
     print("删除了",n.rowcount,"行记录")
     Con.commit()
     Cur.close()
     Con.close()
  运行结果如下:
  
     删除了 2 行记录
3.3.4  数据库表的查询操作
  查询数据库的步骤如下:
  (1)建立数据库连接。
  (2)创建游标对象cur,使用cur.execute(sql)执行SQL的select语句。
  (3)循环输出结果。
  
     import sqlite3
     #打开数据库
     Con=sqlite3.connect("E:sales.db")
     #创建游标对象
     Cur=Con.cursor()
     #查询数据库表
     Cur.execute("select id,price,name from book")
     for row in Cur:
         print(row)
  
  运行结果如下:
  
     (01, 33, 大学计算机多媒体)
     (02, 28, 数据库基础)
     (23, 18, 艺术欣赏)
     (24, 35, 高级语言程序设计)
3.3.5  数据库使用实例——学生通讯录
  设计一个学生通讯录,可以添加、删除、修改里面的信息。
  
     import sqlite3
     #打开数据库
     def opendb():
             conn=sqlite3.connect("E:mydb.db")
             cur=conn.execute("create table if not exists tongxinlu(usernum     
            integer primary key,username varchar(128), passworld varchar(128),             address varchar(125), telnum varchar(128))")
             return cur, conn
     #查询全部信息
     def showalldb():
             print("-------------------处理后的数据-------------------")
             hel=opendb()
             cur=hel[1].cursor()
             cur.execute("select * from tongxinlu")
             res=cur.fetchall()
             for line in res:
                     for h in line:
                             print(h),
                     print
             cur.close()
     #输入信息
     def into():
             usernum=input("请输入学号:")
             username1=input("请输入姓名:")
             passworld1=input("请输入密码:")
             address1=input("请输入地址:")
             telnum1=input("请输入联系电话:")
             return usernum,username1, passworld1, address1, telnum1
     #往数据库中添加内容
     def adddb():
             welcome="""----------------欢迎使用添加数据功能----------------"""
             print(welcome)
             person=into()
             hel=opendb()
             hel[1].execute("insert into tongxinlu(usernum,username, passworld,             address, telnum)values(?,?,?,?,?)",(person[0], person[1],                      person[2], person[3],person[4]))
             hel[1].commit()
             print ("-----------------恭喜你,数据添加成功----------------")
             showalldb()
             hel[1].close()
     #删除数据库中的内容
     def deldb():
             welcome="------------------欢迎使用删除数据库功能------------------"
             print(welcome)
             delchoice=input("请输入想要删除学号:")
             hel=opendb()              #返回游标conn
             hel[1].execute("delete from tongxinlu where usernum =" delchoice)
             hel[1].commit()
             print ("-----------------恭喜你,数据删除成功----------------")
             showalldb()
             hel[1].close()
     #修改数据库的内容
     def alter():
             welcome="------------------欢迎使用修改数据库功能-----------------"
             print(welcome)
             changechoice=input("请输入想要修改的学生的学号:")
             hel=opendb()
             person=into()
             hel[1].execute("update tongxinlu set usernum=?,username=?,                        passworld=?,address=?,telnum=? where usernum=" changechoice,                  (person[0], person[1], person[2], person[3],person[4]))
             hel[1].commit()
             showalldb()
             hel[1].close()
     #查询数据
     def searchdb():
             welcome="-------------------欢迎使用查询数据库功能-----------------"
             print(welcome)
             choice=input("请输入要查询的学生的学号:")
             hel=opendb()
             cur=hel[1].cursor()
             cur.execute("select * from tongxinlu where usernum=" choice)
             hel[1].commit()
                    print("---------------恭喜你,你要查找的数据如下--------------")
             for row in cur:
                     print(row[0],row[1],row[2],row[3],row[4])
                   cur.close()
             hel[1].close()
     #是否继续
     def conti(a):
             choice=input("是否继续?(y or n):")
             if choice==y:
                     a=1
             else:
                     a=0
             return a
     if _ _name_ _=="_ _main_ _":
             flag=1
             while flag:
                     welcome="---------欢迎使用数据库通讯录---------"
                     print(welcome)
                     choiceshow="""
     请选择您的进一步选择:
     (添加)往数据库里面添加内容
     (删除)删除数据库中内容
     (修改)修改数据库的内容
     (查询)查询数据库的内容
     选择您想要进行的操作:
     """
                     choice=input(choiceshow)
                     if choice=="添加":
                             adddb()
                             conti(flag)
                     elif choice=="删除":
                             deldb()
                             conti(flag)
                     elif choice=="修改":
                             alter()
                             conti(flag)
                     elif choice=="查询":
                             searchdb()
                             conti(flag)
                     else:
                             print("你输入错误,请重新输入")
  
  程序运行界面和添加记录界面如图3-2所示。

图3-2  程序运行界面和添加记录界面
3.4  程序设计的步骤
3.4.1  生成试题库
     import sqlite3                #导入SQLite驱动
     #连接到SQLite数据库,数据库文件是test.db
     #如果文件不存在,会自动在当前目录创建
     conn=sqlite3.connect( est2.db)
     cursor=conn.cursor()        #创建一个Cursor
     #cursor.execute("delete from exam")
     #执行一条SQL语句,创建exam表
     cursor.execute(create table [exam] ([question] varchar(80) null, [Answer_A]     varchar(1) null,[Answer_B] varchar(1) null,[Answer_C]     varchar(1) null,
    [Answer_D] varchar(1) null,[right_Answer] varchar(1)     null))
     #继续执行一条SQL语句,插入一条记录
     cursor.execute("insert into exam (question, Answer_A, Answer_B, Answer_C,     Answer_D, right_Answer) values (哈雷慧星的平均周期为, 54年, 56年, 73        年, 83年, C)")
     cursor.execute("insert into exam (question, Answer_A, Answer_B, Answer_C,     Answer_D, right_Answer) values(夜郎自大中“夜郎”指的是现在哪个地方?, 贵州,     云南, 广西, 福建, A)")
     cursor.execute("insert into exam (question, Answer_A, Answer_B, Answer_C,     Answer_D, right_Answer) values(在中国历史上是谁发明了麻药, 孙思邈, 华佗,     张仲景, 扁鹊, B)")
     cursor.execute("insert into exam (question, Answer_A, Answer_B, Answer_C,     Answer_D, right_Answer) values(京剧中花旦是指, 年轻男子, 年轻女子, 年长男子,     年长女子, B)")
     cursor.execute("insert into exam (question, Answer_A, Answer_B, Answer_C,     Answer_D, right_Answer) values(篮球比赛每队几人?, 4, 5, 6, 7, B)")
     cursor.execute("insert into exam (question, Answer_A, Answer_B, Answer_C,     Answer_D, right_Answer) values(在天愿作比翼鸟,在地愿为连理枝。讲述的是谁的爱情故事?,     焦钟卿和刘兰芝, 梁山伯与祝英台, 崔莺莺和张生, 杨贵妃和唐明皇, D)")
     print(cursor.rowcount)            #通过rowcount获得插入的行数
     cursor.close()                    #关闭Cursor
     conn.commit()                    #提交事务
     conn.close()                    #关闭Connection
  
  以上代码完成数据库test2.db的建立。下面实现智力问答测试程序功能。
3.4.2  读取试题信息
     conn=sqlite3.connect( est2.db)
     cursor=conn.cursor()
     #执行查询语句
     cursor.execute(select * from exam)
     #获得查询结果集
     values=cursor.fetchall()
     cursor.close()
     conn.close()
  
  以上代码完成数据库test2.db的试题信息的读取,存储到values列表中。
3.4.3  界面和逻辑设计
  callNext()用于判断用户选择的正误,正确则加10分,错误不加分;并判断用户是否做完,如果没做完,则将下一题的题目信息显示到timu标签,4个选项显示到radio1~radio4这4个单选按钮上。
  
     import tkinter
     from tkinter import *
     from tkinter.messagebox import *
     def callNext():
         global k
         global score
         useranswer=r.get()                        #获取用户的选择
         print(r.get())                         #获取被选中单选按钮变量值
         if useranswer==values[k][5]:
             showinfo("恭喜","恭喜你对了!")
             score =10
         else:
             showinfo("遗憾","遗憾你错了!")    
         k=k 1
         if k>=len(values):                       #判断用户是否做完
             showinfo("提示","题目做完了")
             return
         #显示下一题
         timu["text"]=values[k][0]                #题目信息
         radio1["text"]=values[k][1]            #A选项
         radio2["text"]=values[k][2]            #B选项
         radio3["text"]=values[k][3]            #C选项
         radio4["text"]=values[k][4]            #D选项
         r.set(E)
         
     def callResult():
         showinfo("你的得分",str(score))
  
  以下是界面布局代码:
  
     root=tkinter.Tk()
     root.title(Python智力问答游戏)
     root.geometry("500x200")
     r=tkinter.StringVar()                        #创建StringVar对象
     r.set(E)                                     #设置初始值为E,初始没选中
     k=0
     score=0
     timu=tkinter.Label(root,text=values[k][0])    #题目
     timu.pack()
     f1=Frame(root)                            #创建第1个Frame组件
     f1.pack()
     radio1=tkinter.Radiobutton(f1,variable=r,value=A,text=values[k][1])
     radio1.pack()
     radio2=tkinter.Radiobutton(f1,variable=r,value=B,text=values[k][2])
     radio2.pack()
     radio3=tkinter.Radiobutton(f1,variable=r,value=C,text=values[k][3])
     radio3.pack()
     radio4=tkinter.Radiobutton(f1,variable=r,value=D,text=values[k][4])
     radio4.pack()
     f2=Frame(root)                            #创建第2个Frame组件
     f2.pack()
     Button(f2,text=下一题,command=callNext).pack(side=LEFT)
     Button(f2,text=结  果,command=callResult).pack(side=LEFT)
     root.mainloop()

Python项目案例开发从入门到实战——爬虫、游戏和机器学习 pdf下载声明

本pdf资料下载仅供个人学习和研究使用,不能用于商业用途,请在下载后24小时内删除。如果喜欢,请购买正版

pdf下载地址

版权归出版社和作者所有,下载链接已删除。如果喜欢,请购买正版!

链接地址:Python项目案例开发从入门到实战——爬虫、游戏和机器学习