Python基础学习笔记6

文章目录

一、模块的简介与自定义模块

  • 模块的概念:一个.py的Python文件就是一个模块
  • 为什么要使用模块:
    -方便其他程序和脚本的导入和使用
    -避免函数名和变量名冲突的问题
  • 模块命名的规则和规范:全部小写字母,多个单词之前使用下划线分隔
  • 注意事项:不要与Python自带的标准模块名称相同
  • 自定义模块:实际上就是创建一个Python文件
  • 模块的导入
import modulename as 别名
from modulename import 变量/函数/类等

import my_info
print(my_info.name)
my_info.info()

import my_info as a
print(a.name)
a.info()

from my_info import name
print(name)

from my_info import info
info()

from my_info import *
print(name)
info()

import math,time,random
  • 导入不同模块中的同名函数
from my_info import *
from introduce import *

info()

import my_info
import introduce

my_info.info()
introduce.info()

二、主程序运行的方式

以主程序形式运行

  • 语法结构
if__name__=='__main__':
    pass

if __name__ == '__main__':
    print('welcome to China')
    name = 'jww'
    print(name)

以主程序运行,在该模块被导入到其他模块时,该__main()__中的代码不会被执行
通常主程序中的内容通常是对当前模块的测试内容

三、Python中的包


  • -包是一个分层的目录结构,相当于(文件夹),将一组功能相近的模块组织在同一个包下
    -起到代码规范的作用
    -避免模块名称相冲突的情况
  • 包与目录
    -包里会自带一个__init__.py的文件,在__init__.py文件中的代码,在导入包时会自动执行
    -目录是普通的文件夹
    -如果在普通目录文件夹中创建一个__init__.py的文件,该目录会自动变成包
  • init.py文件在导入包时,会自动执行
  • 包的使用:
    -import 完整的包名.模块名
    *-from 完整的包名 import 模块名称
    -from 完整的包名.模块名称 import 变量/函数/类等
import admin.my_admin
admin.my_admin.info()

from admin import my_admin as b
b.info()

from admin.my_admin import info
info()

from admin.my_admin import *
print(name)
info()

四、Python中常用的内置模块

  • 标准库
    -Python自带的模块成为内置模块,标准模块或被标准库
    -标准库大概270个
    Python基础学习笔记6

; 4.1 random模块

-用于产生随机数的标准库

Python基础学习笔记6
import random
random.seed(10)
print(random.random())
print(random.random())
print('-------------------------------------')
random.seed(10)
print(random.random())
print(random.random())

print(random.randint(1,100))
print('-------------------------------------')

for i in range(10):
    print(random.randrange(1,10,3))

print(random.uniform(1,100))

lst = [i for i in range(1,11)]
print(random.choice(lst))

random.shuffle(lst)
print(lst)
random.shuffle(lst)
print(lst)

4.2 time模块

-Python提供的处理时间的标准库
-可用来时间处理、时间格式化和计时

Python基础学习笔记6
Python基础学习笔记6
import time
now = time.time()
print(now)

obj = time.localtime(60)
print(obj)
print(type(obj))
print('年份:',obj.tm_year)
print('月份:',obj.tm_mon)
print('日期:',obj.tm_mday)
print('时:',obj.tm_hour)
print('分:',obj.tm_min)
print('秒:',obj.tm_sec)
print('星期:',obj.tm_wday)
print('今年的多少天:',obj.tm_yday)

print(time.ctime())

print(time.strftime('%Y-%m-%d',time.localtime()))
print(time.strftime('%H:%M:%S',time.localtime()))
print(time.strftime('%B',time.localtime()))
print(time.strftime('%A',time.localtime()))

print(time.strptime('2008-08-08','%Y-%m-%d'))

time.sleep(20)
print('jww')

五、第三方模块的安装与卸载

  • 第三方模块的安装
    pip install 模块名称
  • 第三方模块的卸载
    pip uninstall 模块名称
  • pip命令的升级
    python -m pip install -upgrade pip

5.1 requests模块

-用于处理HTTP(Hypertext Transfer Protocol超文本传输协议)请求的第三方模块
-常用函数:response = requests.get(url,headers)
-响应结果——字符串数据:response.text;二进制数据:response.content

防止反爬步骤:
1.在浏览器页面右键,选择检查
2.在出现的页面里,在上菜单栏选择Network(如果没有出现相关信息,重新刷新网页即可)
3.随意点击一条,在Headers中找到User-Agent(描述浏览器信息的),复制

Python基础学习笔记6

1.获取景区天气预报

import requests
import re
url = 'http://www.weather.com.cn/weather/101010100.shtml'

myheader = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
}

resp = requests.get(url, headers=myheader)

resp.encoding = 'utf-8'

city = re.findall('([\u4e00-\u9fa5]*)',resp.text)
weather = re.findall('([\u4e00-\u9fa5]*)',resp.text)
wd = re.findall('(.*)',resp.text)
zs = re.findall('([\u4e00-\u9fa5]*)',resp.text)

lst = []
for a,b,c,d in zip(city,weather,wd,zs):
    lst.append([a,b,c,d])

for item in lst:
    print(item)

2.爬取百度LOGO图片

import requests

url = 'https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png'

myheader = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
}

resp = requests.get(url,headers=myheader,verify=False)

with open('logo.png','wb') as file:
    file.write(resp.content)

5.2 openyxl模块

-用于处理Excel文件的模块,可以将Excel中的数据进行写入和读取

Python基础学习笔记6
  • 将数据写入Excel文件

1.将爬取景区天气数据存储到excel文件
(1)先自定义一个模块weather

import requests
import re

def get_html():
    url = 'http://www.weather.com.cn/weather/101010100.shtml'

    myheader = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
    }

    resp = requests.get(url, headers=myheader)

    resp.encoding = 'utf-8'
    return resp.text

def parse_html(html_str):
    city = re.findall('([\u4e00-\u9fa5]*)',html_str)
    weather = re.findall('([\u4e00-\u9fa5]*)',html_str)
    wd = re.findall('(.*)',html_str)
    zs = re.findall('([\u4e00-\u9fa5]*)',html_str)

    lst = []
    for a,b,c,d in zip(city,weather,wd,zs):
        lst.append([a,b,c,d])
    return lst

(2)导入weather模块和openpyxl模块,再进行代码编写

import openpyxl as openpyxl
import weather

lst = weather.parse_html(weather.get_html())
print(lst)

workbook = openpyxl.Workbook()

sheet = workbook.create_sheet('景区天气')

for item in lst:
    sheet.append(item)

workbook.save('景区天气.xlsx')
  • 从Excel文件中读取数据
import openpyxl

wk = openpyxl.load_workbook('景区天气.xlsx')

sheet = wk['景区天气']

lst = []
for row in sheet.rows:
    sublst = []
    for cell in row:
        sublst.append(cell.value)
    lst.append(sublst)
for item in lst:
    print(item)

5.3常用的其他第三方模块

5.3.1 pdfplumber模块

– pdfplumber模块:读取pdf文件中的内容

import pdfplumber

with pdfplumber.open('CS231n笔记.pdf') as pdf:
    for i in pdf.pages:

        print(i.extract_text())
        print('-----------------------------------------------------------------------------------------')

5.3.2 numpy模块

– numpy模块:数据分析中其他模块的依赖库,用于处理数组等操作

import numpy as np
import matplotlib.pyplot as plt

n1 = plt.imread('jww.jpg')

plt.imshow(n1)

n2 = np.array([0.299,0.587,0.114])

x = np.dot(n1,n2)

plt.imshow(x,cmap='gray')

plt.show()

5.3.3 pandas模块和matplotlib模块

– pandas模块:数据分析中非常重要的模块,也可以读取excel数据

– matplotlib模块:数据可视化模块,用于绘制饼图、柱形图、折线图等

import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_excel('ytm.xlsx')

plt.rcParams['font.sans-serif'] = ['SimHei']

plt.figure(figsize=(10,6))
labels = df['学校']
y = df['往年招生人数']
print(labels)
print(y)
plt.pie(y,labels=labels,autopct='%1.2f%%')

plt.axis('equal')

plt.show()

5.3.4 PIL库

-用于安装图像处理的第三方库
-安装模块的名称为pillow

from PIL import Image

im = Image.open('jww.jpg')

r,g,b = im.split()

om = Image.merge(mode='RGB',bands=(b,r,g))
om.save('new_jww.jpg')

5.3.5 wxPython模块

– wxPython模块:是一个成熟且特性丰富的跨平台GUI工具包
python3.9以上用不了这个库

5.3.6 Pygame模块

– Pygame模块:专门为电子游戏设计的模块

5.3.7 jieba库

– jieba库:第三方中文文本分词库

import jieba
with open('yannv.txt','r',encoding='utf-8') as file:
    s = file.read()

lst = jieba.lcut(s)

set1 = set(lst)
d = {}
for item in set1:
    if len(item) >= 2:
        d[item] = 0

for item in lst:
    if item in  d:
        d[item] = d[item] + 1
print(d)

new_lst = []
for item in d:
    new_lst.append([item,d[item]])
print(new_lst)

new_lst.sort(key=lambda x:x[1], reverse=True)
print(new_lst)

5.3.8 wordcloud库

– wordcloud库:根据文本生成词云图
python3.9以上用不了这个库

5.3.9 PyInstaller库

-PyInstaller库:用于将Python源代码进行打包,生成可执行文件的模块
打包语法:pyinstaller -F 源文件
在cmd使用

Python基础学习笔记6
Python基础学习笔记6
-双击该exe
-打包文件如果显示时间过短,可以在源py文件代码结束处加上语句input()

; 六、 实战——模拟高铁售票(prettytable库)

import prettytable as pt

def show_ticket(row_num):
    tb = pt.PrettyTable()

    tb.field_names = ['行号','座位1','座位2','座位3','座位4','座位5']

    for i in range(1,row_num+1):
        lst = [f'第{i}行','有票','有票','有票','有票','有票']

        tb.add_row(lst)
    print(tb)

def order_ticket(row_num,row,column):
    tb = pt.PrettyTable()

    tb.field_names = ['行号', '座位1', '座位2', '座位3', '座位4', '座位5']
    for i in range(1,row_num+1):
        if int(row)==i:
            lst = [f'第{i}行','有票','有票','有票','有票','有票']
            lst[int(column)] = '已售'
            tb.add_row(lst)
        else:
            lst = [f'第{i}行', '有票', '有票', '有票', '有票', '有票']
    print(tb)

if __name__ == '__main__':

    row_num = 6
    show_ticket(row_num)

    choice_num = input('请输入选择的座席,如4,4表示第4排第3列:')
    row,column = choice_num.split(',')
    order_ticket(row_num,row,column)

七、 实战——推算几天后的日期(datetime)

import datetime

def input_date():
    inputdate = input('请输入开始日期:(20221109)后按回车:')
    datestr = inputdate[0:4] + '-' +inputdate[4:6] + '-' + inputdate[6:]
    dt = datetime.datetime.strptime(datestr, '%Y-%m-%d')
    return dt

if __name__ == '__main__':
    date = input_date()

    in_num = eval(input('请输入间隔数:'))
    date = date + datetime.timedelta(days=in_num)
    print('您推算的日期是:', date )

八、 实战——实现GUI登录界面(wxPython)

import wx

class MyFrame(wx.Frame):

    def __init__(self,parent,id):
        wx.Frame.__init__(self,parent,id,title='用户登录',size=(400,240))

        panel = wx.Panel(self)

        self.title = wx.StaticText(panel,label='请输入用户名和密码',pos=(140,20))
        self.label_user = wx.StaticText(panel,label='用户名:',pos=(50,50))
        self.text_user = wx.TextCtrl(panel, pos=(100, 50),size=(220,25),style=wx.TE_LEFT)

        self.label_pwd = wx.StaticText(panel, label='密码:', pos=(50, 90))
        self.text_pwd = wx.TextCtrl(panel, pos=(100, 90), size=(220, 25), style=wx.TE_PASSWORD)

        self.bt_login = wx.Button(panel, label='登录', pos=(105, 130))
        self.bt_cancel = wx.Button(panel, label='取消', pos=(195, 130))

        self.bt_login.Bind(wx.EVT_BUTTON,self.OnClickLogin)
        self.bt_cancel.Bind(wx.EVT_BUTTON,self.OnClickCancel)

    def OnClickLogin(self,event):
        message = ''
        user_name = self.text_user.GetValue()
        user_pwd = self.text_pwd.GetValue()
        if user_name=='' or user_pwd=='':
            message = '用户名或密码不能为空'
        elif user_name=='jww' and user_pwd=='jww':
            message = '登录成功'
        else:
            message = '用户名或密码不正确'

        wx.MessageBox(message)

    def OnClickCancel(self,event):
        self.text_user.SetValue('')
        self.text_pwd.SetValue('')

if __name__ == '__main__':
    app = wx.App()
    frame = MyFrame(parent=None,id=-1)
    frame.Show()
    app.MainLoop()

九、 实战——词云图(jieba和wordcloud)

import jieba
from wordcloud import WordCloud

with open('yannv.txt','r',encoding='utf-8') as file:
    s = file.read()

lst = jieba.lcut(s)

stopword = ['上野','千鹤子','厌女','语录','集锦','所以','与','的','其实','不过','那么','是','即','而是']

txt = ''.join(lst)

wordcloud = WordCloud(background_color='white',font_path='msyh.ttc',stopwords=stopword,
                      width=800,height=600)

wordcloud.generate(txt)

wordcloud.to_file('厌女语录集锦词云图.png')

Original: https://blog.csdn.net/weixin_45807772/article/details/127768531
Author: 小LATA
Title: Python基础学习笔记6

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/779497/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球