一、下载地址: Python:Download Python | Python.org
PyCharm:Download PyCharm: Python IDE for Professional Developers by JetBrains
选择需要的版本下载即可,其中专业版试用30天,社区版免费。
二、安装 1、Python 安装: 选择 Customize installation 自定义安装,勾选 Add Python 3.10 to PATH(添加环境变量)选项。
点击 next:
自定义安装目录,之后选择安装即可。
安装成功界面:
验证是否安装成功,cmd 打开命令界面,输入 python,如下图所示:
2、PyCharm 安装 自定义安装目录,点击 next: 默认即可,点击 next:
安装成功: 三、测试 打开 PyCharm,新建一个项目,运行 main.py,如下图所示,正常运行:
课程:《Python程序设计》班级: 2134姓名: 刘伟洁学号:20213422实验教师:王志强实验日期:2022年4月21日必修/选修: 公选课
(一)实验内容
创建服务端和客户端,服务端在特定端口监听多个客户请求。客户端和服务端通过Socket套接字(TCP/UDP)进行通信。
(二)实验要求
(1)创建服务端和客户端,选择一个通信端口,用Python语言编程实现通信演示程序;
(2)要求包含文件的基本操作,例如打开和读写操作。
(3)要求发送方从文件读取内容,加密后并传输;接收方收到密文并解密,保存在文件中。
(4)程序代码托管到码云。
(三)实验过程及结果
服务端代码:
客户端代码:
运行结果:
程序代码托管到码云:
(四)实验过程中遇到的问题和解决过程
问题一:远程主机强迫关闭了一个现有的连接
解决方案:将socket.py重命名即可。
问题二:目标计算机积极拒绝
解决方案:关闭计算机的防火墙即可。
问题三:UnsupportedOperation :not readable(忘记截图了。。)
解决方案:使用追加方式’a+’打开文件,可以先读文件,再写入文件。
一开始是因为“a”后面少加了一个“+”。
(五)其他
感悟思考:
通过这次试验,我发现了我前期的知识欠缺和经验不足,在发现错误时不能退缩,要积极解决。
一.yield功能 1.使函数变成一个生成器。 2.相当于return,返回值。 3.相当于容器容易接收一个值。
二.例子 1.代码 def func(name): food = [] while True: x = yield food #每一个yield都是先弹上一轮的food,然后挂起等待,直到下一个send传值运行 print({0} 吃 {1}.format(name,x)) food.append(x) f = func(狗哥) res = f.send(None) #相当于f.__next__() print(res) res = f.send(骨头) print(res) res = f.send(粥) print(res) #[] #狗哥 吃 骨头 #['骨头'] #狗哥 吃 粥 #['骨头', '粥'] 2. 讲解 每个yield会先返回值,然后挂起函数等待,直到下一次send函数传值运行下面的代码,结束这个yield的生命周期;随之进入下个yield先返回上次运行结果的值,挂起等待……
那么如果有一天我们的需求是我的主进程结束了,由我主进程创建的那些子进程必须跟着结束,怎么办?守护进程就来了! 主进程创建守护进程后: 其一:守护进程会在主进程代码执行结束后就终止 其二:守护进程内无法再开启子进程,否则抛出异常:AssertionError: daemonic processes are not allowed to have children 语法: 子进程对象.daemon = True 注意:主进程代码运行结束,守护进程随即终止 import time from multiprocessing import Process def son1(): while True: print('--> in son1') time.sleep(1) def son2(): # 执行10s for i in range(10): print('in son2') time.sleep(1) if __name__ == '__main__': # 3s p1 = Process(target=son1) p1.daemon = True # 表示设置p1是一个守护进程 p1.start() p2 = Process(target=son2,) p2.start() time.sleep(3) print('in main') # 主进程会等待所有的子进程结束,是为了回收子进程的资源 # 守护进程会等待主进程的代码执行结束之后再结束,而不是等待整个主进程结束.
1.背景 今天做python3 的with…open联系,发现程序写入到文件中,但是文件内容并没有更新。一直都是老的内容。尝试file.flush等等方式都是不行。
于是最后发现,文件只是查看的时候没有改变,只是有些延迟,具体原因没搞清楚。(而且只在我的w7电脑有这个结果)
在使用的时候所以注意以下就行。
1.文件已经更新了,及时关闭在打开还是老的内容。但是不影响使用,程序读的时候不是老内容。
2.或者等待1分钟左右,文件内容就会更新。
2.代码过程 一个读取文件的实验,文件最后一个字符是一个价格,在购买了商品后,就会减去这个价格。
那么执行这个程序查看
结账之后可以看到,最新余额也更新了,但是就是文件里面没有更新。最新余额是用以下函数,实时获取的。
但是文件里面还是没变,等待大约1分钟左右就变化了
数据演变史 单独的文本文件 没有固定的存放位置,没有固定的数据格式,程序彼此无法兼容,没有统一的标准。
软件开发目录规范 按照文件功能的不同规定了相应的位置,文件查找变得统一,但是没有解决格式问题(核心问题)。
数据库应用 解决了存放位置和数据格式问题,将数据处理部分统一了起来。
数据库应用发展史 单机游戏阶段 数据各自保存在各自的计算机上,无法实现远程共享,无需互联网。
多机游戏阶段 数据统一基于网络保存到某个固定的服务器上,实现数据共享,必须要有互联网。
集群的概念 如果所有的数据全部存储到一台远程服务器上 ,那么数据的安全性降低,服务器的压力上升。所以增加远程服务器的数量,数据同步保存,任务均匀分担。具有相同功能的多个服务器组合到一起,就可以称之为是集群。
数据库本质 数据库在微观层面上:运行在计算机上专门处理数据的进程(程序),eg:内存中的typora代码。
数据库在宏观层面上:提供给操作者一个简单快捷的操作进程的软件,eg:屏幕上typora界面。
我们平时在说数据库的时候大部分指的是操作数据库的应用软件
数据库软件的本质其实也是一款CS架构的软件
既然数据库本质是一款CS架构的软件 也就意味着我们每个会网络编程的程序员理论上来说都可以编写出一款数据库软件 在目前地球上有很多牛逼的程序员 他们都具备编写数据库软件的能力 所以现在市面上其实存在很多数据库软件 数据库分类 关系型数据库 特点:1.有固定的表结构(最主要的特征);2.并且表与表之间可以建立代码层面的关系。
常见关系数据库名称:MySQL、Oracle、PostgreSQL、MariaDB、sqlite、sql server。
MySQL:关系型数据库的代表 开源免费 使用频率极高 Oracle:安全性极高 但是使用和维护收费 使用成本高 PostgreSQL:支持二次开发(自己嫁接、扩展功能) MariaDB:与MySQL是同一个作者 开发的初衷是作为MySQL的替代品 sqlite:小型数据库 携带方便但功能较少 主要用于本地测试使用 sql server:老牌数据库软件 目前主流不用 非关系型数据库 特点:1.没有固定的表结构 数据存取采用K:V键值对的形式(最主要的特征); 2.并且表与表之间无法建立代码层面的关系
常见非关系数据库名称:Redis、MongoDB、Memcache
Redis:目前最火的非关系型数据库 数据类型丰富 功能强大 MongoDB:最像关系型数据库的非关系型数据库 主要用于爬虫和大数据 Memcache:被redis取代了!!! SQL与NoSQL 数据库服务端支持很多客户端来链接使用,比如说数据库自带的客户端,python代码编写的,java代码编写的等待。如何让服务端兼容诸多客户端实现正常交互?方式1:让服务端识别并自动切换对应语言;方式2:统一沟通标准。相较之下方式2更加合理,SQL语句与NoSQL语句。
SQL语句是与关系型数据库交互的语言。SQL有时候用来标识关系型数据库,有时候表示SQL语句。
NoSQL语句是与非关系型数据库交互的语言。NoSQL有时候用来标识非关系型数据库,有时候表示NoSQL语句。
MySQL 版本问题 5.
1.比较数组中,两个相邻的元素,如果第一个元素比第二个元素大,我们就交换它们的位置
2.每一次比较,都会产出一个最大,或者是最小的数字;
3.下一轮则可少一次排序;
4.一次循环直到结束
数据演变史 # 1.单独的文本文件 没有固定的存放位置 没有固定的数据格式 '''程序彼此无法兼容 没有统一的标准''' # 2.软件开发目录规范 按照文件功能的不同规定了相应的位置 '''文件查找变得统一 但是没有解决格式问题(核心问题)''' # 3.数据库应用 解决了存放位置和数据格式问题 '''将数据处理部分统一了起来''' 数据库应用发展史 # 1.单机游戏阶段 数据各自保存在各自的计算机上 无法实现远程共享 '''无需要联网''' # 2.多级游戏阶段 数据统一基于网络保存到某个固定服务器 实现数据共享 '''必须要有互联网''' ''' 集群 如果所有的数据全部储存到一台远程服务器上 安全性就会降低 服务器的压力就会上升 增加服务器数量 数据同步保存 任务均摊 具有相同功能的多个服务器组合到一起 就称之为集群 ''' 数据库本质 ''' 数据库在微观层面上来说 运行计算机上面专门处理数据的进程 数据库在宏观层面上来说 提供给操作者一个简单快捷键的操作进程软件 ''' # 数据库软件的本质其实也是一款CS架构的软件 既然数据库本质是一款CS架构的软件 也就意味着我们每个会网络编程的程序员理论上来说都可以编写出一款数据库软件 在目前地球上有很多牛逼的程序员 他们都具备编写数据库软件的能力 所以现在市面上其实存在很多数据库软件 数据库分类 目前市面上有很多数据库软件 大致可以分为两类 1.关系型数据库 关系型: 1.有固定的表结构(最主要的特征) eg:有固定字段的excel表格 id name gender 2.并且表与表之间可以建立代码层面的关系 eg:用户表与房屋表 用户买房 那么用户数据和房屋数据就应该有关系 常见数据库名称: MySQL、Oracle、PostgreSQL、MariaDB、sqlite、sql server MySQL:关系型数据库的代表 开源免费 使用频率极高 Oracle:安全性极高 但是使用和维护收费 使用成本高 PostgreSQL:支持二次开发(自己嫁接、扩展功能) MariaDB:与MySQL是同一个作者 开发的初衷是作为MySQL的替代品 sqlite:小型数据库 携带方便但功能较少 主要用于本地测试使用 sql server:老牌数据库软件 目前主流不用 2.
python
执行python程序的三种方式
解释器---- python/python3交互式---- ipython (支持自动补全 自动缩进 支持shell命令 内置功能函数)集成开发环境---- PyCharm (图形界面 代码编辑器 解释器 调试器)
python源程序的基本概念
1 python源程序就是一个特殊的文本文件2 python程序的文件扩展名称通常都是 .py 文件命名的3 每行代码只完成一个动作
内容概要 数据库 数据演变史 数据库应用发展史 数据库本质 数据库分类 SQL与NoSQL MySQL MySQL简介 基本使用 系统服务 修改密码 重要概念 操作MySQL基本SQL语句 操作库的基本SQL语句 操作表的基本SQL语句 操作记录的基本SQL语句 内容详情 数据库 数据演变史 1.单独的文本文件 没有固定的存放位置:C:\a.txt D:\aaa\c.txt F:\bbb\b.txt 没有固定的数据格式:jason|123 tony$123 kevin~123 '''程序彼此无法兼容 没有统一的标准''' 2.软件开发目录规范 按照文件功能的不同规定了相应的位置 '''文件查找变得统一 但是没有解决格式问题(核心问题)''' 3.数据库应用 解决了存放位置和数据格式问题 '''将数据处理部分统一了起来''' 数据库应用发展史 1.单机游戏阶段 数据各自保存在各自的计算机上 无法实现远程共享 '''无需互联网''' 2.多机游戏阶段 数据统一基于网络保存到某个固定的服务器上 实现数据共享 '''必须要有互联网''' 集群 如果所有的数据全部存储到一台远程服务器上 那么数据的安全性降低 服务器的压力上升 所以增加远程服务器的数量 数据同步保存 任务均匀分担 具有相同功能的多个服务器组合到一起 就可以称之为是集群 数据库本质 数据库在微观层面上来说 运行在计算机上专门处理数据的进程(程序) eg:内存中的typora代码 数据库在宏观层面上来说 提供给操作者一个简单快捷的操作进程的软件 eg:屏幕上typora界面 我们平时在说数据库的时候大部分指的是操作数据库的应用软件 # 数据库软件的本质其实也是一款CS架构的软件 既然数据库本质是一款CS架构的软件 也就意味着我们每个会网络编程的程序员理论上来说都可以编写出一款数据库软件 在目前地球上有很多牛逼的程序员 他们都具备编写数据库软件的能力 所以现在市面上其实存在很多数据库软件 数据库分类 目前市面上有很多数据库软件 大致可以分为两类 1.