读《零基础学PYthon》有感

前言:

2023年,网络安全竞赛上看见大学同学用python解出了一个谜题,意气风发的我也决心花钱买书把python系统的学习一遍。
结果事与愿违,自己抑郁了半年,再加上繁杂的工作让我不得不放弃计划。今年,我基本能控制住好自己的情绪,能从紧张的工作中抽身出来,重新汲取书中的力量,所以打算静下心来好好写一篇读书笔记。
这次学习,也让我意识到,用chatGPT或者文心一言等大模型工具,能帮助你更快的入门python这个编程语言。这里衷心感谢我的大学舍友提供的读书思路。

书中内容写的很详实,我只是记录我这一个月以来的收获,所以略写的地方需要自己去领悟。

正文:

第一章:初识python

第一章主要讲怎么安装python及其历史,网上资料很多,不做赘述。

第二章:python语言

2.1、python语法特点
  1. 代码缩进
    很重要,我写的第一个程序就是因为代码没缩进,导致报错。
if bmi<18.5
	print("体重过轻")
  1. 注释
 #这是单行注释
"""
这是多行注释
"""
2.2、保留字与标识符
我用的多的:globalpasstry except finallydef

保留字是区分大小写的,如if是保留字,IF不是。

2.4、数据基本类型
数字类型、字符类型、布尔类型
字符串的转换:
chr(x) #将x转换成字符
str(x) #将x转换成字符串
round(x,[ndigits]) 将浮点数X四舍五入到指定位数
2.5、运算符
算数运算符、赋值运算符、比较运算符、逻辑运算符、位运算符
有优先级,一般是:
位  >  算数  >  比较

第三章:流程控制语句

3.1、程序结构
顺序、选择、循环
在选择语句里,像C++里还有switch,但是python里只有 if..elif..else
3.4、循环语句
for i in range(1,10,2):  #规定了循环的起始位置和步长
print(i,end ='')   #规定了按照一行来打印
3.5、跳转语句
break:跳出整个循环
continue:跳出当前循环

第四章:序列的应用

4.1.切片、相加(限制同类)

通过切片,能够生成一个新的序列。

sname[start:end:step]
nba[1,3,2]
4.2.列表
格式转换:list(range(10))
删除:del list
遍历: for item in list:
for index,item in enumerate(list):
添加元素: list.append()
添加列表:list.extend()
修改:list[2]=''
删除:del list[2]
统计某个元素:list.count(x)
获取元素首次出现的下标:list.index(x)
排序:list.sort()
列表推导式:
list =[1,2]
sale =[x for x in list if x>0]
4.3.元组
格式转换:tuple(range(10))
删除:del tuplename
访问: tuplename[0]
遍历: for item in tuplename:
修改:tuplename[2]=''
删除:del tuplename[2]

列表推导式:
tuplename=(1,2)
sale =(x for x in list if x>0)

元组和列表的区别:

1.列表是可变序列,元组属于不可变序列
2.列表可以通过append()、extend()、insert()、remove()、pop()等方法添加和修改元素
3.列表可以通过切片访问和修改列表中的元素
4.元组可以作为字典的键
4.4.字典
创建:dictionary = dict(zip(list1,list2))
删除:dictionary.clear()
访问: dictionary[0]   /  dictionary.get(0)
遍历: for item in dictionary.items():
列表推导式:
import random
randomdict = {i:random.randint(10,100) for i in range(1,5)}
print("生成的字典为:",randomdict)
4.5.集合
创建:setname ={1,2,3}
删除:setname.clear() /setname.pop()
访问: dictionary[0]   /dictionary.get(0)
遍历: for item in dictionary.items():
列表推导式:
import random
randomdict = {i:random.randint(10,100) for i in range(1,5)}
print("生成的字典为:",randomdict)

集合的特点是,可变,不可重复,无序,用“{}” 表示;
元组的特点是,不可便,可重复,有序,用“()”表示。

第五章:字符串及正则表达式

5.1.分割,合并字符串
str1 ='小<<明'
list1 = str1.split('<') #采用<进行分割
5.2.检索字符串
str1 ='小<<明'
list1 = str1.find('<') #采用<进行分割
srt1.startswitch('x') #检索是否以x开始
str1.endswitch('x') #检索是否以x结束
5.3.字符串大小写转换
str1 ='小<<明'
list1 = str1.lower() 
list2 = str1.upper() 
5.4.去除字符串空格
str1 ='小<<明'
list1 = str1.strip() 
5.5.格式化字符串

这一块有点复杂,多看书吧。

5.6.字符串编码转换
str1 ='小<<明'
str1.encode([encoding ='utf_8'][,errors ='strict']) #字符串转二进制
str1.decode([encoding ='utf_8'][,errors ='strict']) #二进制转字符串
5.7.正则表达式
^”    表示行的开头
“$”    表示行的结尾
“\b”   匹配单词的开始或结束
“\w”   匹配字母,数字,下划线
“\s”   匹配单个的空白符
“\S”   除空白符以外的
“{m,m}” 匹配前面字符,最少m次,最多n次。
“^”   排除字符
“\”   转义字符

这一块有点复杂,多看书吧。
除此之外,还可以使用RE模块实现正则表达式操作

第六章:函数

6.1.可变参数

*parammeter可变参数,表示接收多个实际参数并将其放到一个元组中。
这里形参,实参怎么区分就不赘述了,多看书吧。

def fun_upgrade(*persons):  
    '''功能:根据身高体重计算BMI'''  
    for list_person in persons:  
        for item in list_person:
            if len(item) != 3:  
                print("错误:每个人需要提供一个三元组(姓名, 身高, 体重)。")  
                continue
            person = item[0]
            height = item[1]
            weight = item[2]
            print("\n"+"="*13,person, "="*13)  
            print("身高:"+str(height)+"米 \t 体重:"+str(weight)+"千克")  
            bmi = weight / (height ** 2)  # 计算BMI指数  
            print("BMI指数:"+str(bmi))  # 输出BMI值  
            # 判断身材是否合理  
            if bmi < 18.5:  
                print("你的体重过轻")  
            elif bmi >= 18.5 and bmi < 24.9:  
                print("正常范围,注意保持")  
            elif bmi >= 24.9 and bmi < 29.9:  
                print("你的体重过重")  
            else:  
                print("肥胖")

list_w =[("晓梦",1.70,65),("张三", 1.75), ("李四", 1.8, 70)]
list_s=[("晓梦",1.85,70)]
fun_upgrade(list_w)
6.2.返回值
return[value]

如果返回的是多个值,result返回的是一个元组

6.3.局部变量和全局变量

函数体内的局部变量想要改变函数体外的全局变量时,需要修饰global关键字。如下代码:

mes ='晓梦'
print('函数体外:mes =',mes)
def f_demo():
	global mes
	mes =''
	print('函数体外,mes =',mes)
f_demo()
print('函数体外,mes =',mes)

如果返回的是多个值,result返回的是一个元组

6.4.匿名函数

一次性回调函数,且只能有一个返回值,如下:

bookinfo = [('不一样的卡梅拉(全套)',22.50,120),('零基础学Android',65.10,89.80),('不一样的卡梅拉(全套)',23.40,36),('不一样的卡梅拉(全套)',22.50,128)]
print('爬取到的商品信息:\n',bookinfo,'\n')
bookinfo.sort(key=lambda x:(x[1],x[1]/x[2]))
print('排序后的商品信息')

第七章:面向对象程序设计

这一块很关键,我单独写一篇笔记。

第八章:模块

import modulename [as alias]

在使用import 语句导入模块时,每执行一条import语句都会创建一个新的命名空间。
如果不想在每次导入模块时都创建一个新的命名空间,而是将具体的定义导入到当前命名空间时,可以使用

from  modulename import member [as alias]

python中有大量的标准模块和第三方模块,这也是这个语言的优势。

第九章:异常处理和调试

以下是异常概述

  • NameError :尝试访问一个没有声明的变量引发的错误
  • IndexError : 索引超出序列范围引发错误
  • IndentationError :缩进错误
  • ValueError :传入的值错误
  • KeyError : 请求一个不存在的字典关键字引发的错误
  • IOError :输入输出错误
  • IMportError :无法找到模块错误
  • AttributeError :访问未知对象属性引发的错误
  • TypeError :类型不合适引发的错误
  • MemoryError :内存不足
  • ZeroDivisionError :除数为0引发的错误

以下是调试的三种方法

try:
   division()
except ZeroDivisionError:
   print('0不能作为被除数') 
try:
   division()
except ZeroDivisionError:
   print('0不能作为被除数') 
else:
   print('运算完成') 
try:
   division()
except ZeroDivisionError:
   print('0不能作为被除数') 
else:
   print('运算完成') 
finally:
   print('我不管,反正我的活干完了') 

还可以使用raise语句抛出异常。

第十章:文件及目录操作

这一块很关键,我单独写一篇笔记。

第十一章:使用Python操作数据库

这一块很关键,我单独写一篇笔记。

  • 17
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晓梦林

都看到这里了,支持一下作者呗~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值