Category - 课堂代码

2022-05-08 08:24:07    7    0    0
  1. '''
  2. c/s模式编程: c客户端, s服务端
  3. TCP套接字
  4. 套接字模块: socket
  5. netfamily: socket.AF_INET(跨网络通信)/AF_UNIX(计算机本地通信,效率更高,对操作系统有一定要求,
  6. 需要unix-like(uninx/linux/macos)操作系统)
  7. SOCK_STREAM: tcp套接字类型
  8. SOCK_DGRAM: UDP套接字类型
  9. 域名和ip的关系:
  10. 域名: www.baidu.com, 通俗的说域名是ip的一个别名, 103.235.46.39
  11. www.baidu.com -> 103.235.46.39
  12. www.baidu.com -> 103.235.46.40
  13. 1. 域名容易记忆, ip不容易记忆
  14. 2. ip会发生变化, 域名相对不会发生变化
  15. 变量是内存地址的一个别名, 0x12345678, 非常容易识别好记
  16. 实现一个tcp的客户端
  17. '''
  18. import socket
  19. # 1. 初始化套接字实例(socket)
  20. s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  21. # 2. 连接服务器, ip+端口(port)
  22. baidu_ip = 'www.baidu.com'
  23. baidu_port = 80
  24. s.connect((baidu_ip, baidu_port))
  25. # 3. 发送请求数据
  26. s.send(b'GET / HTTP/1.1\r\nUser-Agent: curl/7.29.0\r\nHost: www.baidu.com\r\nAccept: */*\r\nConnection: close\r\n\r\n')
  27. # 4. 接收响应数据, receive
  28. d = s.recv(1024) # buffer缓冲区的大小, 容器大小
  29. print(d)
  30. # 5. 关闭网络连接, 释放资源
  31. s.close()
2022-04-10 08:28:32    18    0    0
  1. import string
  2. import tkinter
  3. from tkinter import ttk
  4. import random as r
  5. window = tkinter.Tk()
  6. window.title("随机密码生成器")
  7. '''
  8. gui 事件驱动
  9. 1. 根据用户的操作去进行响应的处理
  10. 2. 定时器, after, 在多少时间之后触发一个函数的回调, 格式: win.after(delay_ms,func=函数,*args), 只会执行一次
  11. 3. 事件绑定, bind, 专门将事件和一个函数进行绑定, 格式: win.bind(sequence=<事件名>,func=函数)
  12. 3.1 按键: 键盘敲击某个按键去调用一个函数
  13. 3.2 鼠标: 鼠标按某个键(左/右/中)去调用一个函数
  14. 事件名如何表示:
  15. - 鼠标事件: Button: 代表所有鼠标键的点击
  16. Button-1: 代表鼠标左键的点击
  17. Button-2/3: 代表鼠标右键的点击
  18. ButtonPress: 鼠标按下事件
  19. ButtonPress-1: 代表鼠标左键的点击
  20. ButtonPress-2/3: 代表鼠标右键的点击
  21. ButtonRelease: 鼠标抬起事件
  22. ButtonRelease-1: 代表鼠标左键的点击
  23. ButtonRelease-2/3: 代表鼠标右键的点击
  24. - 按键事件: KeyPress: 按键按下
  25. KeyRelease: 按键抬起
  26. KeyPress-a: 按字母按下事件, 区分大小写
  27. Control-Shift-KeyPress-H: 组合键
  28. KeyPress-Return: 回车键Enter
  29. 函数: bind函数有固定格式, 一个参数event
  30. '''
  31. def func01():
  32. print("after function")
  33. window.after(100, func=func01)
  34. # window.after(5000, func=func01)
  35. def f
2022-03-27 08:02:37    9    0    0
  1. '''
  2. GUI
  3. tkinter tk interface
  4. GUI概念
  5. 窗口: 是所有组件的容器, 一个GUI程序只能有一个窗口
  6. 控件: 窗口里面盛放的小组件, 比如按钮/文本框.. 简单控件/组合控件
  7. 事件: 是窗口和用户之间的交互, 通过事件窗口可以响应外部的操作
  8. 窗口的布局:
  9. - 绝对布局: place
  10. - 相对布局: pack
  11. - 网格布局: grid
  12. 控件:
  13. - 按钮 Button
  14. - 文本框: Label
  15. - 文本输入框: Entry
  16. - 单选框: RadioButton
  17. - 下拉框: Commobbox
  18. 控件名(master,options)
  19. '''
  20. import string
  21. import tkinter
  22. from tkinter import ttk
  23. import random as r
  24. window = tkinter.Tk()
  25. window.title("随机密码生成器")
  26. label = tkinter.Label(window, text='密码:')
  27. label.grid(row=0, column=0)
  28. entry_text = tkinter.StringVar()
  29. entry = tkinter.Entry(window, textvariable=entry_text)
  30. entry.grid(row=0, column=1)
  31. def gen_poor_password(password_len):
  32. list = r.choices(string.ascii_lowercase, k=password_len)
  33. return ''.join(list)
  34. def medium_password(len):
  35. password = r.choices(string.ascii_lowercase + string.ascii_uppercase + string.digits, k=len)
  36. return ''.join(password)
  37. '''
  38. entry设置文本的两种方法:
  39. - entry.delete(0, tkinter.END)/entry.insert(0, password)
  40. - 控制变量: entry_text.set(password)
  41. '''
  42. def
2022-03-20 08:17:21    13    0    0
  1. '''
  2. GUI
  3. tkinter tk interface
  4. GUI概念
  5. 窗口: 是所有组件的容器, 一个GUI程序只能有一个窗口
  6. 控件: 窗口里面盛放的小组件, 比如按钮/文本框.. 简单控件/组合控件
  7. 事件: 是窗口和用户之间的交互, 通过事件窗口可以响应外部的操作
  8. 窗口的布局:
  9. - 绝对布局: place
  10. - 相对布局: pack
  11. - 网格布局: grid
  12. 控件:
  13. - 按钮 Button
  14. - 文本框: Label
  15. - 文本输入框: Entry
  16. - 单选框: RadioButton
  17. - 下拉框: Commobbox
  18. 控件名(master,options)
  19. '''
  20. import tkinter
  21. from tkinter import ttk
  22. window = tkinter.Tk()
  23. window.title("随机密码生成器")
  24. label = tkinter.Label(window, text='密码:')
  25. label.grid(row=0, column=0)
  26. entry = tkinter.Entry(window)
  27. entry.grid(row=0, column=1)
  28. def fun01():
  29. print("button clicked")
  30. entry.insert(0, "button clicked")
  31. print(var_radio.get())
  32. btn = tkinter.Button(window, text="生成", command=fun01, cursor="plus")
  33. btn.grid(row=0, column=2, columnspan=3, sticky=tkinter.W + tkinter.N)
  34. # RadioButton
  35. # 多选框
  36. # image
  37. # 参数: 主控件, options
  38. # pad 填充
  39. # text: text静态文本, 程序运行时不改变的
  40. # textvariable: 是动态文本, 程序运行时能动态改变的
  41. # radiobutton成组出现时: variable参数一定要是同一个, 并且value参数不能相同
  42. var_radio = tkinter.IntVar()
  43. radio = tkinter.Radiobutton(window, t
2022-03-13 08:33:04    9    0    0
  1. '''
  2. GUI
  3. tkinter tk interface
  4. GUI概念
  5. 窗口: 是所有组件的容器, 一个GUI程序只能有一个窗口
  6. 控件: 窗口里面盛放的小组件, 比如按钮/文本框.. 简单控件/组合控件
  7. 事件: 是窗口和用户之间的交互, 通过事件窗口可以响应外部的操作
  8. 窗口的布局:
  9. - 绝对布局: place
  10. - 相对布局: pack
  11. - 网格布局: grid
  12. 控件:
  13. - 按钮 Button
  14. - 文本框: Label
  15. - 文本输入框: Entry
  16. - 单选框: RadioButton
  17. - 下拉框: Commobbox
  18. 控件名(master,options)
  19. '''
  20. import tkinter
  21. window = tkinter.Tk()
  22. window.title("随机密码生成器")
  23. label = tkinter.Label(window, text='密码:')
  24. label.grid(row=0, column=0)
  25. entry = tkinter.Entry(window)
  26. entry.grid(row=0, column=1)
  27. def fun01():
  28. print("button clicked")
  29. entry.insert(0, "button clicked")
  30. btn = tkinter.Button(window, text="生成", command=fun01)
  31. btn.grid(row=0, column=5)
  32. window.mainloop() # 主循环, 进入事件系统
2022-01-16 10:10:03    11    0    0
  1. # 将站名从json里加载到python dict里
  2. import json
  3. import requests
  4. with open("station_name.json", "r", encoding="utf-8") as file:
  5. station_names = json.load(file)
  6. #1. 定义cookie, 从浏览器上复制标头里的Cookie信息
  7. #2. requests.get方法中使用cookies参数传递cookie
  8. cookie = {
  9. "Cookie": "_uab_collina=163989662013689087788656; JSESSIONID=6F71D581C0B79F538C48D84671D90C59; _jc_save_fromStation=%u5317%u4EAC%2CBJP; _jc_save_toStation=%u4E0A%u6D77%2CSHH; _jc_save_wfdc_flag=dc; BIGipServerpassport=904397066.50215.0000; guidesStatus=off; highContrastMode=defaltMode; cursorStatus=off; RAIL_EXPIRATION=1641978502826; RAIL_DEVICEID=lRZ-NZ8KVvenlmxGVRDY6sEQLl9vfztTy046woUuXxahLWPUQEiV1Z0CvmDakEt9nFIjADCwL1Bc_wWLHO3K7q553hxN_R18_cfYCT2lOIuBCcW5HyG6yLGYwmhZfZfVdB3ajjcpMk5uS4OT3vKzTugHJ27YBf5l; route=9036359bb8a8a461c164a04f8f50b252; _jc_save_toDate=2022-01-09; BIGipServerotn=149946890.50210.0000; _jc_save_fromDate=2022-01-09"
  10. }
  11. # 1. 将出发日期/起始站/到达站 定义成变量
  12. # 2. 将变量放入url(网络地址)中进行网络请求(request
2022-01-16 10:09:14    4    0    0
  1. '''
  2. 如何查看网络请求: 打开浏览器, 通过F12快捷键打卡开发者工具, 在开发者工具网络(Network)选项卡中查看网络请求
  3. 浏览网站流程:
  4. 1. 客户端(浏览器)发送网络请求
  5. 2. 服务器(12306网站服务端)接收到用户请求,处理用户请求
  6. 3. 服务器发送处理结果给客户端(浏览器)
  7. 网络名词:
  8. Url: 是网站的唯一标识, 是网站的地址, 通过在浏览器中输入url即可访问指定的网站
  9. Cookie: 网站识别用户的唯一标识
  10. url类似于门牌号, cookie类似于钥匙
  11. JSESSIONID=53E77D821DFA1A6370BF18B68D00D526; route=9036359bb8a8a461c164a04f8f50b252; BIGipServerotn=955253258.50210.0000; RAIL_EXPIRATION=1640156627608; RAIL_DEVICEID=HHUFxIoyq5IJ3XCexA1nnSNQtNz3vdfdA43QeppBvaM_rEhMdmROm-u3lkTrouIfO2De29t5zllpye_T-ZRw4wLXT00unHv7UxpO5NfFZjJQ4YuAfMfpUoKBEfxnLZgOXkOAu1L421JWJbzDmHykIonNyxG6DEyy; guidesStatus=off; highContrastMode=defaltMode; cursorStatus=off
  12. requests模块: 模拟客户端进行url请求
  13. 使用pip安装request模块: 打开cmd,运行 pip install requests
  14. '''
  15. import requests # 导入request模块
  16. # 使用request的get方法模拟浏览器访问12306网页
  17. response = requests.get('https://kyfw.12306.cn/otn/resources/js/framework/station_name.js?station_version=1.9217')
  18. split_result = response.text.split('@')
  19. # print(split_result)
  20. '''
  21. 忽略列表里
2022-01-16 10:08:49    9    0    0
  1. '''
  2. 如何查看网络请求: 打开浏览器, 通过F12快捷键打卡开发者工具, 在开发者工具网络(Network)选项卡中查看网络请求
  3. 浏览网站流程:
  4. 1. 客户端(浏览器)发送网络请求
  5. 2. 服务器(12306网站服务端)接收到用户请求,处理用户请求
  6. 3. 服务器发送处理结果给客户端(浏览器)
  7. 网络名词:
  8. Url: 是网站的唯一标识, 是网站的地址, 通过在浏览器中输入url即可访问指定的网站
  9. Cookie: 网站识别用户的唯一标识
  10. url类似于门牌号, cookie类似于钥匙
  11. JSESSIONID=53E77D821DFA1A6370BF18B68D00D526; route=9036359bb8a8a461c164a04f8f50b252; BIGipServerotn=955253258.50210.0000; RAIL_EXPIRATION=1640156627608; RAIL_DEVICEID=HHUFxIoyq5IJ3XCexA1nnSNQtNz3vdfdA43QeppBvaM_rEhMdmROm-u3lkTrouIfO2De29t5zllpye_T-ZRw4wLXT00unHv7UxpO5NfFZjJQ4YuAfMfpUoKBEfxnLZgOXkOAu1L421JWJbzDmHykIonNyxG6DEyy; guidesStatus=off; highContrastMode=defaltMode; cursorStatus=off
  12. requests模块: 模拟客户端进行url请求
  13. 使用pip安装request模块: 打开cmd,运行 pip install requests
  14. '''
  15. import requests # 导入request模块
  16. # 使用request的get方法模拟浏览器访问12306网页
  17. response = requests.get('https://kyfw.12306.cn/otn/resources/js/framework/station_name.js?station_version=1.9217')
  18. split_result = response.text.split('@')
  19. print(response.text.split('@'
2/2