学会了Python,感觉自己膨胀了许多——Python零基础学习个人笔记(更新ing最近时间9.1)

个人笔记,同时也记录着本人的学习轨迹~ 附有目录便于查阅碎片知识
如果什么不足之处也欢迎大家来指正
更多系列欢迎大家戳主页去阅读~


一、Python基本语法

1.变量

变量顾名思义就是一个可以随时改变内容的容器的名称,可以给某一个变量赋予任意的数值或者是文字内容。

Python为一种解释性语言,所以在使用变量的时候不用定义声明数据类型

(1)变量的使用

1.基本语法为:变量名称 = 变量值

score = 80 
fruit = '橙子'
height = 1.81
# 上面都是正确的变量赋值方式

"#"是Python的注释符号,和这个符号同一行后面的内容都不会被识别运行
还有一种注释符号是各用三个单引号来包括起来,示例如下:

'''
这样引号中间不论几行都会被注释起来~~
'''

2.变量可以连续赋值

a = b = c = d =20 # 四个值全部为20 

3.Python特色赋值方式

a,b = 10,20 #特色赋值,a值为10,b数值为20

利用这个特色方式,我们可以轻易进行数值交换

a,b = 10,20
a,b = b,a # a和b的数值交换了,a值为20,b值为10

(2)变量的删除

如果变量不再使用,可以将变量删除(释放)以节省内存,具体用del实现

del score # 将变量score删除

(3)变量的命名

需要遵守的规则如下:

1.变量第一个符号必须是字母、下划线_、或中文(最好还是不用中文,会降低程序移植性)
2.只能由字母(区分大小写)、下划线、中文、数字组成变量名称
3.变量名称不能与Python保留字相同(如and array del if while is or for range等)

(4)变量的输出

Python库里面给与我们一种标准输出方式,就是采用print函数
使用方式:print(变量一,变量二,变量三,…)

print('我是一条小青龙') # 屏幕输出这句话
a,b = 10,'香蕉'
print(a,b) #输出a和b的内容,中间用空格隔开(同理想同时n个变量,就用逗号分隔开)

2.数据类型

(1)整型

a = 0b1010 # 二进制整型,用0b表示
b = 0o12 # 八进制整型,用0o表示
c = 10 # 十进制整型
d = 0xa # 十六进制整型,用0x表示

type——用来辨别变量地数据类型

print(type(a)) # 输出<class 'int'>

(2)浮点数

a = .4 # 小数点前不写数字默认为0.4
b = 10.2 # 10.2
c = 1e4 # 科学计数法1*10四次方
d = 1e-4 # 科学计数法1*10负四次方
print(type(a)) # 输出<class 'float'>

(3)字符串

1.字符串的创建
字符串通常为用单引号或双引号包起来的变量

boy = '小明'
girl = "小红" #这两种方式都能正确表示字符串
print(type(a)) # 输出<class 'str'>

如果字符串里面想要有特殊字符例如\ ’ ‘’%等,需要一些转义字符

'''
\'代表单引号 \\代表反斜杠 \''代表双引号
%%代表百分号 \n代表换行 \t代表tab键  示例如下:
'''
TEM = '这句话我想有单引号\'然后换个行\n想有百分号%%'
# 输出结果为:
# 这句话我想有单引号'然后换个行
# 想有百分号%

2.字符串的访问
字符串的访问可以通过仿数组的形式,通过下角标来使用某一个字符
下角标从0开始,负数代表从后往前访问

word = 'hello'
a = word[0] # 第一个字母h
b = word[2] # 第三个字母l
c = word[-1] # 倒数第一个字母o

3.字符串的进阶应用
(1)切片访问(继续用上面的word=‘hello’) 用冒号来控制范围

a = 'abcdefg'
b = a[2:5] # 从a[2]开始,逐个往后提取(5-2=3)个字符
print(b,type(b)) # 输出结果为cde b的数据类型依旧是str
print(a[2:]) # 如果后面只写一个冒号 代表从a[2]开始提取到最后 cdefg
print(a[:3]) # 如果前面只写一个冒号 代表从a[0]开始提取三个字符 abc

(2)字符串的运算操作

# 用加法可以直接连接字符串
a='abc'
b='def!'
print(a+b) # abcdef!
# 乘法的意思是将字符串重复复制多少次
c=a*4
print(c) #abcabcabcabc
# 用len()可以访问字符串长度
print(len(a)) # 输出值为3

(4)布尔与None

1.bool类型 用于判断某一个条件是真是假

a = True
b = False
# 注意首字符大写!!!!!!!!!

2.None 代表变量为空(不是被删除了,也不为0)

a = None
print(a) # 输出None

(5)数据类型的转换

Python中数据类型转换格式为:数据类型(要改变的变量),例:

a = '123'
print(a,type(a)) # 123 <class 'str'>
a = int(a)
print(a,type(a)) # 123 <class 'int'>

3.运算符与表达式

表达式是什么?1+1=2 这个“1+1”就是最典型的表达式

根据操作数的个数,将运算符分为单目运算符和双目运算符

(1)单目运算符

单目运算符只有一个操作数,位于某个操作数的前方
例如:- 还有not

“-”代表取相反数,not代表非某某,比如not True就是False

a,b = 10,True
a,b = -a,not b
print(a,b) # -10 False

(2)双目运算符

1.算术运算符

'''
+ 加法运算  - 减法运算  * 乘法运算  / 除法运算(算术除法)
% 取余运算  // 整除运算 ** (左)的(右)次方
+= -= *= /= //= %= **=这些为复合赋值运算符  
'''
a,b,c=6/2,6//2,4//3
print(a,b,c) # a为浮点数3.0,b为整型3,c为整型1
a=7**3 # 相当于7的三次方

a = 2
a+=1 # 相当于a=a+1
a**=4 # 相当于a=a**4

重要的地方就是注意除法和整除的区别!!!
2.关系运算符
进行两个表达式的比较,返回值为True或Fause

'''
== 判断是否相等  != 判断是否不等  > 判断是否大于
< 判断是否小于  >= 判断是否大于等于  <= 判断是否小于等于
'''
print(1==2,1!=2,1<=2) # False True True

3.逻辑运算符
多个关系表达式进行运算后,我们可以通过逻辑运算符把他们联系起来

'''
and:逻辑且,相当于C语言的&&,只有两端都为True时返回值才为真
or:逻辑或,相当于C语言的||,只有两端都为Fause时返回值才为假
'''
a,b = 1!=2 and 1<=2,1==2 and 1!=2
print(a,b) # a两端都为真所以为真,b左端为假,所以一定为假
c,d = 1!=2 or 1==2,3==4 or 5==6
print(c,d) # c左端已经为真所以一定为真;d两端都为假所以为假 

单目运算符里面的not也属于逻辑运算符

4.输入与输出

(1)输入input

标准输入是将数据通过输入设备(键盘)赋值给变量
基本语法:变量=input(“你想写的某一句提示语”)
注意:input输入的变量默认为str字符串类型

score = input("请输入学生的成绩")
print(score,type(score))
score = int(score)
print(score,type(score))

在这里插入图片描述

Python虽然支持中文变量,还有输入输出中文内容,但是有的时候还是会报错,如果程序运行错误,那么极有可能是文件编码出现了问题
因为咱们默认的ascll码里面会没有中文,需要将文件编码转为UTF-8
(pycharm的右下角可以更改文件编码)

(2)输出print

前面已经了解过基本的输出,那么在这里我们深度学习一下print的进阶
1.多个变量输出——sep决定用什么间隔
在print函数里面其实有一个变量名为sep,它的值决定了多个变量输出时用什么来间隔,默认时候sep=’ '(空格)

print('我们','将会','默认','以空格','来进行数据间隔') # 我们 将会 默认 以空格 来进行数据间隔
print('我们','将会','以减号','来进行数据间隔',sep='-') # 我们-将会-以减号-来进行数据间隔

2.end——决定print最终是以什么结尾
我们在进行输出的时候通常会发现,每次调用完print函数之后都会默认换行,这是因为在函数里还有一个名为end的变量,默认值为’\n’

print('我的结尾会有一个问号而且不换行',end='?')
print('你看~我真的直接连着在上一行数据后面存在~')
# 输出结果:我的结尾会有一个问号而且不换行?你看~我真的直接连着在上一行数据后面存在~

3.print输出格式控制

name = 'li hua'
age=20
str_1 = "111我的名字叫%s,我今年%d岁了!"%(name,age)
print(str_1)
str_2 = "222我的名字叫{},我今年{}岁了!".format(name,age)
print(str_2)
str_3 = "333我的名字叫{name},我今年{age}岁了!".format(name='li hua',age=20)
print(str_3)
str_4 = f"444我的名字叫{name},我今年{age}岁了!"
print(str_4)
'''输出结果为:
111我的名字叫li hua,我今年20岁了!
222我的名字叫li hua,我今年20岁了!
333我的名字叫li hua,我今年20岁了!
444我的名字叫li hua,我今年20岁了!
'''

上面有四种字符串的输出格式控制方式,分别为:

str_1:类似于C语言的格式控制符,%d为整型,%s为字符串,
%.3f浮点数保留3位小数,%5d整型输出5个字符宽度,小于5则左端空格补齐
%6.2f输出6个字符宽度(包括小数点),小于6则左端空格补,否则格式不变
保留两位小数
str_2:Python特色format(Python2.0常用)
优点:避免控制符和变量数据类型不同导致程序报错
str_3:Python特色进阶(Python3.0常用)(注意一定要重新赋值否则报错)
str_4:Python3.6新出特色(前缀一个f简化format)

二、条件语句、循环语句

我们在学习这些语句之前,如果有着C语言基础,请抛弃掉之前的大括号思路,C语言中的大括号在Python中都以缩进代替。

1.if条件语句

(1)单条if 语句

'''基本格式:
if 条件:
	程序语句(一定要缩进!)
'''# 实例如下
a = int(input("请输入一个数字\n"))
if a>0:
    print('这是一个正数')
if a==0:
    print('这是零')
if a<0:
    print('这是一个负数')

(2)if-else 语句

用于非A即B的那种条件进行判断

'''基本格式:
if 条件:
	程序语句(一定要缩进!)
else:  (在这里else等同于 if not 上面if的条件)
	对立的语句
'''# 实例如下
a = int(input("请输入一个数字\n"))
if a>0:
    print('这是一个正数')
else:
    print('这是一个非正数')

(3)if-elif-else语句

用于A+B+C+…=全集E的那种条件进行判断
其中的elif可以有无限个

'''基本格式:
if 条件:
	程序语句(一定要缩进!)
elif 条件:(注意和C语言的else if区分)
	该条件下的语句
else:(这里的else就是排除上面所有条件剩下的可能种类)
	
'''# 实例如下
a = int(input("请输入一个数字\n"))
if a>0:
    print('这是一个正数')
elif a==0:
    print('这是零')
else:
    print('这是一个负数')

2.while循环语句

while语句很容易理解,就是满足while后面的条件时候会一直循环,一直到不满足时就跳出循环。

'''基本格式:
while 条件:
	满足条件的语句
'''# 实例如下:逐行输出1-10
a = 1
while a <= 10:
    print(a)
    a += 1

3.for循环语句

'''基本格式:
for 变量 in 某一个范围/容器:
	循环内的语句
'''

这个范围和容器,也可以视为一个条件语句,将符合容器里面的所有信息都循环一遍之后停止。
具体的一些数据结构容器我们会在后期讲述,这里用一个列表list为例。

# 输出一个列表的所有值
a = [1,5,9,8,6,4,2,3,1] # 这个a就是所谓的容器
for item in a:
    print(item) # 会将a里面所有元素逐行输出

还有for循环以某一临时范围为条件,我们用range来实现

'''两种格式:
for 变量 in range(a,b): (变量值在区间[a,b)里变化,从a开始每次加1)
	语句
例如:range(1,5)就是变量值在[1,5)中变化,从1开始每次加1

for 变量 in range(a,b,c): (变量值在[a,b)里变化,从a开始每次加c)
'''# 具体实例:
for i in range(3,10):
    print(i) # 输出(3,9]的数据,默认每次输出+1
for i in range(1,20,4):
    print(i) # 输出1 5 9 13 17 最后一个参数就是每次加的数据

4.break与continue

用来控制循环的终止

break:如果在循环里运行到break,那么会马上退出循环,循环立即终止
continue:如果在循环里运行到break,本轮循环终止,开始下一轮循环
实例如下:

a = 1
while a <= 10:
	if a==5:
		break
    print(a)
    a += 1
# 这样只会输出1 2 3 4
a = 1
while a <= 10:
	if a==5:
		continue
    print(a)
    a += 1
# 这样会输出1 2 3 4 6 7 8 9 10

三、基本数据结构

在程序设计中,我们总会将数据对象用一些容器装起来,这种数据对象本身的组织方式就是数据结构。

1.列表list

列表就像是一个篮子,这个篮子里面可以放各种各样的东西,用中括号[]表示

(1)列表的创建、访问

'''基本格式:
变量 = [变量1,变量2,变量3,.....]
里面的变量可以是任何数据类型的个体元素,也可以是一个列表/元组等数据结构
列表的元素可以直接通过下角标来访问
'''# 实例如下:
a = [1,2.0,'嘿嘿!']
print(a) # 结果为[1, 2.0, '嘿嘿!']
print(a[2]) # 结果为嘿嘿!
print(a[-1]) # 负数依旧是从最后开始逆序访问(结果为嘿嘿!)

由于列表里的元素可以是数据结构,因此我们可以在某列表里面进行嵌套形成多维列表(访问方式依旧是通过下角标)

fruit = ['香蕉','菠萝','哈密瓜','橙子']
food = ['米饭','面条',fruit,'包子']
print(food[2]) # 输出整个列表 ['香蕉', '菠萝', '哈密瓜', '橙子']
print(food[2][1]) # 输出fruit列表的第2个元素 菠萝

列表也可以进行切片访问

a = [1,2,3,4,5,8,9,10]
list1 = a[:5] # [1, 2, 3, 4, 5] 从a[0]到a[5-1]形成的列表
list2 = a[2:] # [3, 4, 5, 8, 9, 10] 从a[2]到末尾形成的列表
list3 = a[2:5] # [3, 4, 5] 从a[2]到a[5-1]形成的列表
list4 = a[2:7:3] # [3, 8] 从a[2]到a[7-1]每加3取一个数组成列表(a[2] a[5])

(2)range函数创建列表

range函数的语法有三种,分别是1个、2个、3个参数

a1 = range(5) # a1=[0,1,2,3,4]
a2 = range(1,5) # a2=[1,2,3,4]
a3 = range(1,20,4) # a3=[1,5,9,13,17]
'''三个参数一定要是整数!!如果range范围内没有元素就是生成空列表'''

我们在前面for循环了解过range,所以range函数的本质是生成一个列表,for循环in range依旧是在生成的这个列表里循环。

Python3中严格说直接用range生成的变量并不是真正的列表,我们仍需进行一下类型转换才能生成真正的列表。(实例如下)

a = range(1,10,2)
print(a,type(a)) # 输出 range(1, 10, 2) <class 'range'>
print(a[1]) # 输出 3
b = list(a) # 进行一个格式的强制转换
print(b,type(b)) # [1, 3, 5, 7, 9] <class 'list'>

range类型的假列表我们依旧可以通过下角标来访问元素值,只是在输出整个列表时它的可读性比较差(比较上面的a和b)。

(3)列表的高级操作

学过C++的人会知道C++里有STL标准库里面存储了与C有关许多的数据结构还有相关的函数操作,在Python数据结构中,我们对应的数据结构也会有一些高级操作,是通过函数来实现的。
1.运算符运算
乘法加法等于不等于是列表常用的运算符

a = [1,2,3,4,5,8,9,10]
b = ['香蕉','菠萝','哈密瓜']
list1 = a*4 # 乘法代表列表a重复4遍 [1, 2, 8, 9, 10, 1, 2, 8, 9, 10, 1, 2, 8, 9, 10, 1, 2, 8, 9, 10]
list2 = a+b # 加法代表列表拼接 [1, 2, 8, 9, 10, '香蕉', '菠萝', '哈密瓜']
bool1 = a==b # 如果两个列表相等,返回True;否则返回False
bool2 = a!=b # 如果两个列表不等,返回True;否则返回False

2.查询列表某些属性
列表长度取某元素的下标某元素出现次数是列表常用的属性,如果列表里面全部是浮点数和整型数,还可以研究最大值最小值

a = [1,2,8,11.2,9,10,2]
b = ['香蕉','菠萝','哈密瓜']
num1 = len(a) # 返回值为a的长度 7
num2 = a.index(2) # 返回值为元素2出现的第一个下标 1
num3 = a.count(2) # 返回值为元素2出现的次数 2
Max = max(a) # 返回最大值 11.2
Min = min(a) # 返回最小值 1

3.改变列表自身的操作
(1)列表元素添加
append——将某元素传到列表最后
extend——将某容器里所有的元素传到列表最后
(这个容器可以是列表、range、元组、字典等任意有元素的数据结构)
insert——将某元素添加到列表的某一处位置(传入一个角标的参数)

a = [1,2,3,4,5,6]
x = [8,9]
d = b = c = a # 拷贝一下列表a
a.append(99) # 添加99这一个元素
print(a)
b.append(x) # 把x这个列表当成一个元素添加到尾部
print(b)
c.extend(x) # 把x里面所有的元素按序添加到尾部
print(c)
d.insert(1,'我是单词')
print(d)

运行结果:
[1, 2, 3, 4, 5, 6, 99]
[1, 2, 3, 4, 5, 6, 99, [8, 9]]
[1, 2, 3, 4, 5, 6, 99, [8, 9], 8, 9]
[1, ‘我是单词’, 2, 3, 4, 5, 6, 99, [8, 9], 8, 9]
仔细看看,有什么疑问?
提示:b c和d各只调用了一次函数

程序第三行有一个拷贝的操作,因为这时候实际上abcd四个列表是同时改变数值的(比如在b里面添加了[8,9]这个元素,在a和c里同样也添加了)
这个是列表的拷贝操作类似于C语言的指针。
(2)列表元素删除
del()——删除变量最常用的方法
pop()——返回列表选定index的元素值并删除该元素
remove(某)——删除首次出现的某元素

a = [1,2,5,4,3,8,4]
del a[1] # 将a[1]这一个元素删除
del a # 将整个列表a删除
a = [1,2,5,4,3,8,4]
a.remove(4) # 将第一个元素4移出
print(a) # [1, 2, 5, 3, 8, 4]
print(a.pop(1),a,sep='与') 
# 返回a[1]的数值,并且将a[1]删除 2与[1, 5, 3, 8, 4]
print(a.pop()) # 不传入参量就是返回最后一个的数值,并且将最后一个元素删除

(3)排序和翻转
reverse——将整个列表翻转
sort——排序函数(无参数时为从小到大)

a = [5,5.4,3,1,22,4,6]
a.reverse() # 将a翻转,a变成[6, 4, 22, 1, 3, 5.4, 5]
a.sort() # 将a内元素从小到大排序 [1, 3, 4, 5, 5.4, 6, 22]

上面的sort函数是从小到大排序,我们可以传入一些控制的参数,让其变成从大到小排序——sort函数里面有一个参数为reverse默认值为False。

a = [5,5.4,3,1,22,4,6]
a.sort(reverse=True) # 告诉程序排序时进行翻转(这里是参数不是那个reverse函数)
print(a) # [22, 6, 5.4, 5, 4, 3, 1]

2.元组tuple

元组也是Python的一种线性数据结构,与列表类似,最本质的区别是元组一旦创建就不可以修改

(1)元组的创建、访问

1.元组的创建
与列表相比,元组是外表用小括号括起来的一种数据结构

第一种:小括号赋值
第二种:多组数据用逗号分隔开来
(如第二种方法所言,假如不小心在语句末尾添加了逗号,就极有可能将变量变成了元组导致后续操作失误或者是运行失败)

a = (1,2,3,4,5)
print(a,type(a)) # 输出结果 (1, 2, 3, 4, 5) <class 'tuple'>
b = 1,2,3 # 多个数直接加逗号,代表是元组
print(b,type(b)) # (1,2,3) <class 'tuple'>

2.元组的访问
常规访问:下角标直接访问(依旧可以在元组)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值