目录

  • 单元1  初识Python
    • ● 任务 1.1  计算机程序设计语言概述
    • ● 任务 1.2 Python语言
    • ● 任务1.3 Python开发环境搭建
    • ● 任务 1.4 Python的简单使用
    • ● 知识拓展
    • ● 思考与练习
  • 单元2   Python基础知识
    • ● 任务2.1 Python程序基本结构
    • ● 任务2.2  标准输入输出
    • ● 任务2.3  Python对象
    • ● 任务2.4 Python变量
    • ● 任务2.5  数据类型
    • ● 任务2.6 字符串
    • ● 任务2.7 运算符
    • ● 知识拓展
    • ● 思考与练习
  • 单元3   程序流程控制
    • ● 任务3.1  顺序结构
    • ● 任务3.2 选择结构
    • ● 任务3.3  循环结构
    • ● 知识拓展
    • ● 思考与练习
  • 单元4  Python序列
    • ● 任务4.1  序列
    • ● 任务4.2 列表
    • ● 任务4.3  用于序列操作的常用内置函数
    • ● 任务4.4   元组
    • ● 任务4.5  字典
    • ● 任务4.6  集合
    • ● 知识拓展
    • ● 思考与练习
  • 单元5  函数
    • ● 任务5.1 函数的定义与调用
    • ● 任务5.2 函数的参数
    • ● 任务5.3   参数类型
    • ● 任务5.4  变量作用域
    • ● 任务5.5   嵌套调用与递归调用
    • ● 任务5.6  lambda表达式
    • ● 任务5.7  模块
    • ● 知识拓展
    • ● 思考与练习
  • 单元6  异常处理
    • ● 任务6.1 异常处理的基本概念
    • ● 任务6.2 Python的异常处理语句
    • ● 任务6.3  自定义异常
    • ● 知识扩展
    • ● 思考与练习
  • 单元7  文件操作
    • ● 任务7.1  文件的分类
    • ● 任务7.2  文件对象
    • ● 任务7.3  文本文件
    • ● 任务7.4  二进制文件
    • ● 知识拓展
    • ● 思考与练习
  • 单元8  面向对象程序设计
    • ● 任务8.1 面向对象技术的基本概念
    • ● 任务8.2 类与对象
    • ● 任务8.3 类的继承
    • ● 任务8.4 方法重写
    • ● 知识扩展
    • ● 思考与练习
  • 单元9  网络编程基础
    • ● 任务9.1  Socket概述
    • ● 任务9.2   Socket对象内建方法
    • ● 任务9.3  Socket编程实例
    • ● 任务9.4    PythonInternet模块
    • ● 知识扩展
    • ● 思考与练习
  • 单元10    Python标准库及第三方库
    • ● 任务10.1 Python标准库
    • ● 任务10.2 Python第三方库的下载及安装
    • ● 任务10.3  Python第三方库举例
    • ● 知识扩展
    • ● 思考与练习
  • 任务11 用户图形界面(GUI)
    • ● 任务11.1 图形用户界面概述
    • ● 任务11.2 窗体容器和组件
    • ● 任务11.3 界面布局管理
    • ● 任务11.4 文本框组件
    • ● 任务11.5 其他组件
    • ● 任务11.6菜单与对话框
    • ● 任务11.7 鼠标键盘事件
    • ● 知识扩展
    • ● 思考与练习
  • 任务12   Python操作数据库
    • ● 数据库基础
    • ● 结构化查询语言SQL
    • ● Python操作数据库核心API
    • ● Python操作数据库案例
    • ● sqlite3 实训练习案例
    • ● pymysql 数据库实训案例
    • ● 小结  思考与练习
  • 习题解析(线上作业等参考解答)
    • ● 第一单元 初识Python  作业
    • ● 第二单元  Python基础(作业)
    • ● 第三单元  程序流程控制 作业(1)
    • ● 第三单元  程序流程控制  作业(2)
    • ● 第四单元  Python序列   作业
    • ● 第五单元   函数   作业
    • ● 单元六  异常处理  作业
    • ● 单元七、八  文件操作,GUI,面向对象
    • ● 单元九   网络编程基础
    • ● 线上习题解析
    • ● 编程训练
  • 应用题解(综合编程技术)
    • ● 《食品识别小专家》
    • ● 格式输出
    • ● 习题选解
    • ● 每日一帖
    • ● 模拟基本信息
    • ● 模拟基本数据
    • ● 数制转换
    • ● 定制每日运动计划
    • ● 《简易购物系统》
  • 课程章节测验
    • ● 第1次章节测验
  • 复习
    • ● Python基础知识总结
  • 第三方库TOOLS(备用)
    • ● 库模块(可下载)
    • ● 供考查备用的库模块(可下载)
知识扩展

调试运行下面网络应用程序

#调试下面程序,并在理解的基础上优化应用.

#【案例】整数网络传输  (1) 服务器程序

import socket

import struct

def readInt(socket):

    size=struct.calcsize("@i")

    data=socket.recv(size)

    n=struct.unpack("@i",data)[0]

    return n

def writeInt(socket,n):

    data=struct.pack("@i",n)

    socket.send(data)

try: 

    s = socket.socket()

    host = socket.gethostname()   #python通过socket模块获取本机主机名和IP地址

    print('GZHX 本机主机名和IP地址:  ',host,socket.gethostbyname(host) )

    port = 2345

    s.bind((host, port))

    s.listen()

    print(host,"服务器在监听...");

    c= s.accept()[0]

    print('客户端连接')

    n=readInt(c)

    print('客户端发来信息: ',n)

    writeInt(c,n)

    c.close()

    s.close()

except   Exception as e:

    print(e)


#【案例】整数网络   传输(2) 客户端程序

import socket

import struct

def readInt(socket):

    size=struct.calcsize("@i")

    data=socket.recv(size)

    n=struct.unpack("@i",data)[0]

    return n

def writeInt(socket,n):

    data=struct.pack("@i",n)

    socket.send(data)

try:

    a=input("输入整数")

    a=int(a)

    s = socket.socket()

    host =socket.gethostname()

    print('目标服务器名称:',host)

    port = 2345

    s.connect((host, port))

    print("祝贺你!  连接服务器成功");

    writeInt(s,a)

    b=readInt(s)

    print(b)

    s.close()

except Exception as e:

    print(e)


说明:

(1)若没有运行服务器端程序,将出现下面信息:

输入整数20220117

目标服务器名称: MS-20170419NIDS

[WinError 10061] 由于目标计算机积极拒绝,无法连接。

(2)先运行服务器端程序,服务器端出现信息:

GZHX 本机主机名和IP地址:   MS-20170419NIDS 192.168.31.53

MS-20170419NIDS 服务器在监听...

再运行客户端程序,则连接成功,客户端出现信息:

输入整数  20220118

目标服务器名称: MS-20170419NIDS

祝贺你!  连接服务器成功

MS-20170419NIDS 接收到的信息是 20220118

>>> 

服务器端信息:

GZHX 本机主机名和IP地址:   MS-20170419NIDS 192.168.31.53

MS-20170419NIDS 服务器在监听...

客户端连接

客户端发来信息:  20220118




应用实例:HX06(名言分享与机器聊天)

# -*- coding:utf-8 -*-

#  服务器端程序    HX04(名言分享聊天)Server.py

import socket  #导入socket模块

fs=["好好学习,天天向上!","厚德载物!","阅读使人充实,会谈使人敏捷,写作使人精确。","厚德、重能、敬业、善事!" ,"华夏多美丽!","信工学院欢迎您!"]

ms=["Hi,我是HX小信 !","这名言是毛主席的语录。","这名言是清华大学的校训。" ,"这是培根的名言,他是英国文艺复兴时期最重要的散作家、哲学家。","  这是华夏学院的校训。欢迎你到华夏!","我爱信工学院,我想您也是的!"]

try:

    s = socket.socket()       #创建 socket 对象

    host ='127.0.0.1'          # host=socket.gethostname()   #主机IP   host = '127.0.0.1' ; 例209室内ip:192.168.209.22~~199  可在命令行方式,用 ipconfig /all 查动态ip

    port =8080                 #端口号  如:8080

    s.bind((host, port))

    s.listen(10)              #设置最多连接数

    print(host," 服务器在监听,等待客户端连接... \n")

    k=0

    while True:              #开启永真循环

       c= s.accept()[0]      #建立客户端连接

       d=c.recv(1024)         #获取客户端请求数据

       d=d.decode()           #将接收的数据模式转换

       t=c

       print(t,type(t))

       print('\n',t,'发来信息:\n ',d)    #打印输出接受数据

       d=ms[k]+"\n you say:  "+d+" \n     您好! 很高兴与您聊聊,分享精彩名言:\n "+fs[k]

       d=ms[k]+"\n  很高兴与你分享名言:\n "+fs[k]

       k=k+1

       d=d.encode()

       c.send(d)      # 向客户端发送数据

       if k>=5:

           yn=input(" quit ?(y/n)").lower()

           if  yn=='y':break

           else: k=0

    c.close()

    s.close()

except Exception as e:

    print('\n',e)


print("服务器工作结束! BYE- BYE! ")

s.close()            #关闭链接

c.close()

#  客户端程序   HX06(名言分享聊天)Client.py

import socket   # 导入socket模块

def sends():

   s= socket.socket()  # 创建TCP/IP套接字

   host = '127.0.0.1'  # 获取主机地址   例209室内ip:192.168.209.22~~199,   可在命令行方式,用 ipconfig /all 查动态ip

   port = 8080        # 设置端口号

   s.connect((host,port)) # 主动初始化TCP服务器连接


   send_data = input("QQ:") # 提示用户输入数据

   s.send(send_data.encode()) # 发送TCP数据


# 接收对方发送过来的数据,最大接收1024个字节

   recvData = s.recv(1024).decode()

   #print('接收到的回应信息:',recvData)


  # 关闭套接字

   s.close()

   return   recvData


k=0

while   True:

    datas=sends()

    k=k+1

    #print('第 '+str(k)+' 次,接收到的回应信息: \n',datas)

    print('he/she say: \n',datas)

    if k%5==0 :

       yn=input(" quit ?(y/n)").lower()

       if  yn=='y':

           print("工作结束! BYE- BYE! ")

           break

       else:

          pass