python学习大纲(自用)

目录

0、pycharm快捷键

1、输入

2、输出

3、标准数据类型

4、运算符

5、顺序、选择、循环结构

6、列表list

 7、字典dict{a:b}

7、集合set{1,2,3,4}

8、元组 tuple(),无法修改

9、赋值、浅拷贝和深拷贝

10、函数 

11、filter和map方法

12、装饰器

13、模块

14、面向对象基础

15、文件操作

16、正则表达式

17、python操作word、Excel、ppt、pdf文件
​​​​​​​


0、pycharm快捷键

注释代码 Ctrl+/

复制行 Ctrl+ d

全局搜索:敲两下Shift

移动行 shift+alt+上/下

1、输入

int(input(“请输入数据:”))

2、输出

print("xxx")

def print(self, *args, sep=' ', end='\n', file=None): # known special case of print
    """
    print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
    
    Prints the values to a stream, or to sys.stdout by default.
    Optional keyword arguments:
    file:  a file-like object (stream); defaults to the current sys.stdout.
    sep:   string inserted between values, default a space.
    end:   string appended after the last value, default a newline.
    flush: whether to forcibly flush the stream.
    """

3、标准数据类型

Python3 中有六个标准的数据类型:

  • Number(数字)
  • String(字符串)' '
  • List(列表)[]
  • Tuple(元组)() 元组不可修改
  • Set(集合){}无序,每一次输出都随机,无重复元素,无法通过下标访问修改
  • Dictionary(字典){}

Python3 的六个标准数据类型中:

  • 不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组);
  • 可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)。

4、运算符

Python 语言支持以下类型的运算符:

5、顺序、选择、循环结构

class Person:
    def __init__(self):
        self.result = 1
    # 说白了就是类中一个特殊方法,类对象可以像字典对象那样根据key取值(dict['key']),
    # 如类对象Object['key'],系统会自动调用__getitem__方法
    # (所以你在看pytorch里面Dataloader的时候没有发现主函数直接调用__getitem__,原来是系统自动调用),
    # 然后返回该方法定义return值,说到这里,有一点需要强调哦, 字典取值时key不存在,会抛出异常,
    # 而类对象的key是否存在,都会调用__getitem__方法并返回其规定的值
    def __getitem__(self, item):
        self.result += 1
        if self.result >= 6:
            raise StopIteration('停止遍历')  # 给出警告
        return self.result


p = Person()
for i in p:
    print(i)

6、列表list

list1 = ['兰博基尼', '坦克300', True, False, 666]
for i in list1:
    print(i)
# 列表添加元素
list1.append('秦始皇')
list1.extend(['康熙', '乾隆'])  # 不会改变维度,追加一个元素,extend会进行拆分
list1.insert(1, '曹操')
print(list1)
# 删除元素
list2 = ['西游记', '三国演义', '红楼梦', '水浒传']
list2.pop()
list2.remove('红楼梦')
list2.clear()  # 清空列表
# 列表元素的排序
list3 = [5, 1, 2, 8, 3, 19]
list3.sort()  # 默认升序 reverse=True是降序
list4 = sorted(list3, reverse=True) # 新列表 key=len按长度排序
list4.reverse()
len(list4)
print(max(list4))
print(list4.index(5))
print(list4)
# 列表生成式
list5 = []
for i in range(1, 6):
    list5.append(i**2)
print(list5)
list6 = [i**2 for i in range(1, 6)]
list7 = [i for i in range(1, 11) if i % 2 == 1]
print(list6)
print(list7)

 7、字典dict{a:b}

dict1 = {'name': '张三', 'age': 18, 'sex': 1, 'school': 'wit'}
print(dict1)
# 访问元素
print(dict1['name'])
print(dict1.get('name'))
# 删除元素
dict1.pop('age')
dict1.popitem()  # 删除最后一个
# 清空
dict1.clear()
# 获取长度、keys、values
# 遍历
'''
普通遍历的是keys
values
enumerate
items
'''
for item in range dict1.items():
    print(item)
# 合并字典  update


7、集合set{1,2,3,4}

set1 = {2, 23, 45, 999, True}
print(set1)
# 长度
len(set1)
# 添加元素
set1.add(46)
set1.update([1, 2, 3])
# 删除元素
set1.pop()  # 随机删除
set1.remove(2) # 会报错
set1.discard(99)
# 清空集合
set1.clear()
# 遍历集合
for i in set1:
    print(i)

8、元组 tuple(),无法修改

与列表相似,但是无法修改

tup = (1, 2, 3, 4, True, '宝宝')
# 访问
# 切片
# 长度len(tup)
# 获取max()    min()
# 其他数据类型转化为元组
list1 = [1,2,3]
tuple(list1)
print(type(list1))

9、赋值、浅拷贝和深拷贝

赋值:其实就是对象的引用(取别名)

import copy

list1 = [1, 2, 3, '张三']
# 浅拷贝
list2 = list1.copy()
print(list1, list2)
list1[2] = '李四'
print(list1, list2)
# 深拷贝 用于多维列表
list3 = [1, 2, 3, ['老师', '学生'], 222]
list2 = copy.deepcopy(list3)

10、函数 

目的:重复的代码,便于程序维护

函数定义、for、while循环、if语句要加冒号:

def test():
    for i in range(1, 11):
        if i % 2 == 0:
            print(i)

test()
# 函数可以赋值给其他变量
demo = test
demo()

# 不定长参数
# *args:用来接收多个位置参数,得到是元组,一般放在最后
def demo(name, *args):
    print('my name is %s,my cars are %s' % (name, args))

demo('张三', '兰博基尼', '大奔')

# **kwargs:用来接收多个关键字参数(key word),得到是字典
def func(name, **kwargs):
    print(name, kwargs)

func('李四', age = 12,money = '1w',say = 'hello')
# 函数的返回值
def func1():
    return '我是返回值', '李四'

print(func1())
# 函数可以嵌套,也可以调用后面的函数
# 匿名函数
num1 = lambda num: num ** 2
print(num1(3))
# 回调函数
def add(x,y):
    return x + y
def cha(a,b):
    return a - b
def cheng(a,b):
    return a * b
def chu(a,b):
    return a / b
def function(a,b,fun):
    return fun(a,b)
print('a,b之和为', function(2,3,cheng))
# 闭包函数:外部函数的返回值的内部函数
def outer():
    def inner():
        print('我是闭包函数')
    return inner  # 这里返回的是函数体,不是函数的调用


fn = outer()  # fn等价于inner
fn()  # fn()等价于inner()





11、filter和map方法

# filter 筛选,返回值是filter对象
age = [12, 18, 20, 31, 35, 56, 78]
list1 = filter(lambda ele: ele>30, age)
print(list1)
print(list(list1))
# map 适合把每个数据进行操作
list2 = map(lambda ele: ele + 3, age)
print(list(list2))

12、装饰器

# def test():
#     print('你好吗?')

"""
test = outer(test)
test()
"""
# 装饰器简洁写法
# 定义装饰器函数
def outer(fn):  # fn是原函数
    def inner():
        fn()                # 原函数
        print('我很好!')    # 新增功能
    return inner
@outer  # 等价于test = outer(test)
def test():  # 原函数必须在装饰器的下面
    print('你好吗?')


test()
# 装饰器的其他用法
# 多个装饰器修饰一个函数:遵循就近原则


13、模块

# 目的:为了方便快速开发
# 五种引用模块的方法
# 法一
import time
start = time.time()
# time.sleep(2.5)
end = time.time()
# print(end - start)
# 法二
from random import randint
print(randint(1, 2))
# 法三
from random import *

# 法四:起别名
import datetime as dt
print(dt.time())
# 法五 给方法取别名
from copy import deepcopy as dp
# 常见模块
# math数学操作
# os操作文件
# random 生成随机数
# datetime 显示日期时间
import datetime
print(datetime.datetime.now())
# time 操作时间,控制时间

# pip工具,是用来安装和卸载python的扩展的工具
# 豆瓣镜像地址:https://pypi.douban.com/simple/
# 在终端输入 pip install numpy -i https://pypi.douban.com/simple/
# pip show numpy 查看扩展

# 自定义模块(模块本质就是py文件)
import my_module
my_module.test()

14、面向对象基础

# 定义类(封装person的各种属性和方法)
class Person():
    # 属性
    name = '张三'
    age = 18

    # 方法
    def eat(self):
        print('我在吃饭')

    def say(self):
        print('我在说话')


jack = Person()  # self 表示的是jack对象
jack.say()
# 构造函数和析构函数
"""
统称魔术方法
会在合适的时机自动触发
必须以__开始和__结束
主要用于数据库的连接或者关闭或者文件的保存
"""


class Animal():
    """
    # 类属性
     name = '小白'
     age = 1
     """

    # 构造函数:创建对象赋值之后,自动触发
    def __init__(self, name, age):
        self.name = name
        self.age = 1
        print(f'我叫{self.name}, 今年{self.age}岁了')

    # 析构函数:时机:对象被销毁或者程序执行完毕
    def __del__(self):
        print('我是析构函数')


dog = Animal('小白', 1)
print('hello world!')

# 类属性和对象属性
'''
类不能访问对象的属性,类改类,对象改对象
'''


# 继承
# 构造函数的继承
# 隐式继承:super()
class Person():
    def __init__(self, name):
        self.name = name

    def say(self):
        print('人在说话')


class Boy(Person):
    def __init__(self, name, sex, weight):
        Person.__init__(self, name)
        self.sex = sex
        self.weight = weight

    def eat(self):
        print('boy在吃饭')


XiaoMing = Boy('jack',1,120)
XiaoMing.say()
XiaoMing.eat()


# 类方法
# 静态方法
class Student:
    name = 'jack'

    @classmethod
    def eat(cls):
        print('i am eating')

    @staticmethod
    def run():
        print('i am running')

    # 定义私有属性
    __age = '25'
    # 定义私有方法:用于类的内部使用,在外部没有用
    def __kiss(self):
        pass


xiaoZhang = Student()
xiaoZhang.age # 类外部无法访问私有属性

# 多态(通过重写/重载父类的方法)
# 父类的引用指向子类的对象

15、文件操作

# open(file,mode,encoding)打开文件,返回打开后的这个文件对象
"""
file 文件所在路径
mode 打开文件的模式 不写就默认r(read)(w write写 a append追加内容)
encoding 编码格式,windows默认gck编码格式,demo.txt写入时是utf-8格式
"""
file = open('demo.txt', encoding='utf-8')
# file.read()读取内容,读取和写入要用相同的编码格式
print(file.read())
# 关闭文件资源
file.close()
"""
文件路径分为:
绝对路径 从c盘开始找 C:/PycharmProjects/code/demo.txt \是转义字符
相对路径 从当前文件开始找 . 表示当前目录,可以省略不写 ..表示上一级目录 ../../上上级目录
"""
file1 = open('C:/PycharmProjects/code/demo.txt', encoding='utf-8')
print(file1.read())
# 写入文件,如果文件不存在则直接创建一个文件
file2 = open('./cc.txt', 'w', encoding='utf-8')
file2.write('hello world!')
# 刷新管道缓冲区
file2.flush()
file2.close()

16、正则表达式

"""
正则表达式:是一个特殊的字符序列,用于检索,替换符合某个模式的文本
可以爬虫,验证手机号码,身份证号邮箱是否合法,数据分析,用简单的方式实现复杂控制,减少代码量

re.match(pattern, string, flags=0)
pattern模式
# pattern匹配单个字符规则:
\d 表示一个数字,0-9的任意数字。等价于[0-9],
\D 匹配非数字字符,等价于[^0-9]
\w 匹配数字、字母、下划线,等价于[0-9a-zA-Z_]
\W 上面的取反
\s 匹配任意的空白字符(空格 回车 制表符 换页),等价于[\r \n \t \f]
\S 取反
[] 表示匹配括号内的一位
- 表示一个区间
. 表示非换行符就行
+  可以出现1池或者多次

# 匹配多个字符规则:
g?l 匹配g单个字符出现次数,只能匹配0次或者1次
re.search('goog?le', 'goole') #l前面出现0次g
string要验证的字符串
+ 表示前面字符可以出现1次或者多次
* 表示前面字符可以出现0次或者多次
g{3} g只能出现三次
{3-6} 出现3-6次

# 边界字符
^x 以x开始
d$ 以d结尾
^文本$ 完全匹配(一模一样)
\ 转义字符
flags标志位(可选参数) 用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等
re.S 使.匹配到\n
re.I 忽略大小写
"""
import re
print(re.search('hel\dlo','hel6lo world'))

# 引入
result = re.search("^1\d{10}$", "02345678911")  # 以1开头,0-9之间的任意数字,10位,$匹配文本的结束
if result:
    print("手机号码合法")
else:
    print("手机号不合法")

# re.match() 从开头开始验证返回的是对象,或者None
'''
re.match(pattern, string, flags=0)
pattern模式
string要验证的字符串
flags标志位 用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等
'''

# re.search() 返回对象,匹配字符串整个是否包含指定的内容
"""
 re.search()匹配整个字符串,直到找到一个匹配。
"""
# re.split()拆分
print(re.split('\d', 'hello123world1234abc'))
# re.sub()替换
str1 = '今天  天气  很晴朗'
print(re.sub('\s+','...',str1))
# 匹配中文
chinese = "[\u4e00-\u9faa5]+"
print(re.search(chinese,'hello 光头陈 world'))




17、python操作word、Excel、ppt、pdf文件

"""
python 操作Excel文件
老版本2007以前(xls格式) 用第三方库xlrd xlwt 以及工具模块xlutils
pip install xlwt xlrd xlutils
新版本 (xlsx和XML)openpyxl
"""
import xlrd, xlwt
import random
'''
# 读取Excel文件

# 打开工作簿
wb = xlrd.open_workbook('./data/2022年长春工程学院(市政工程)方向复试情况汇总表(20220410).xls')
# 获取工作表名称
sheetnames = wb.sheet_names()
# 通过工作表名称获取工作表对象
sheet = wb.sheet_by_name(sheetnames[0])
print(sheetnames)
# 获取工作表的行数和列数
print(sheet.nrows, sheet.ncols)
# 打印工作表中数据
for row in range(sheet.nrows):
    for col in range(sheet.ncols):
        value = sheet.cell(row, col).value  # 获取数据单元格数据
        print(value, end='\t')
    print()
'''
# 写入Excel文件,五个学生,三门课程,将分数写入Excel文件
student_names = ['刘备', '张飞', '关羽', '黄忠', '赵子龙']
scores = [[random.randrange(50, 100 + 1) for _ in range(3)] for _ in range(5)]  # 双层for循环生成式
print(scores)
# 创建工作簿对象
wb1 = xlwt.Workbook()
# 创建工作表对象
sheet = wb1.add_sheet('蜀国武将成绩')
# 添加表头数据
titles = ['姓名','语文','数学','英语']
# 将一个可读取的对象传递给enumerate函数,他返回一个枚举类型的对象。
# 将其转化为列表后输出元素为元祖(‘序号’,对应元素)的一个列表
for index, title in enumerate(titles):
    sheet.write(0, index, title)

# 将学生姓名和成绩写入单元格
for row in range(len(scores)):
    sheet.write(row + 1,0,student_names[row])
    for col in range(len(scores[row])):
        sheet.write(row + 1,col +1, scores[row][col])

# 保存工作簿
wb1.save('./data/考试成绩表.xls')

import openpyxl
# 读取Excel
# 加载一个工作簿
wb = openpyxl.load_workbook('./data/考试成绩表.xls')
# 获取工作表名称
print(wb.sheetnames)
# 获取工作表
sheet = wb.worksheets[0]
# 范围
print(sheet.dimensions)
# 行列
print(sheet.max_row,sheet.max_column)
# 指定单元格的值
print(sheet['C3'].value)
# 遍历
# 双层for循环
for row_ch in range(2,sheet.max_row+1):
    for col_ch in 'ABCDEFG':
        value= sheet[f'{col_ch}{row_ch}'].value
        print(value,end='\t')
    print()

# 写入Excel
# 1、创建工作簿
wb = openpyxl.Workbook()
# 2、添加工作表
sheet = wb.active
sheet.title = '三国擂台比赛成绩'
# 保存工作簿
wb.save('./data/三国擂台比赛成绩.xlsx')
'''
word
pip install lxml==4.2.5
pip install python-docx

PPT
pip install python-pptx

PDf
pip install PyPDF2
'''

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值