Python学习笔记
可以点击右侧四横杠图标打开目录快速浏览哦!
po先学过C和C++,故本文会部分提到与C的区别,没学过的可以自动忽略哦。(第三章之后不同之处有点多,懒得提了~)
一:环境配置
还没有搞太懂,暂时咕咕咕🕊
下文代码采用非交互式(脚本式)
且采用python3
二:变量与数据类型
1.变量的命名
如果你有学习过C,那这一部分与C相似。
1.变量名只能包含字母、数字和下划线。变量名可以字母或下划线开头,但不能以数字开头。
2.变量名不能包含空格,但可使用下划线来分隔其中的单词。
3.不要将Python关键字和函数名用作变量名。
4.变量名应既简短又具有描述性,见名知义。
5.Python中区分大小写。
6.慎用小写字母l和大写字母O,因为它们可能被人错看成数字1和0。
2.数据类型
注释
在这里先提一嘴注释。
# 一个井号(#)在开头单行注释
# 前后各三个单引号或者三个双引号可以多行注释
'''
a=5
print(a+True)
print(a+False)
'''
"""
a=5
print(a+True)
print(a+False)
"""
#选中要注释的多行,按Ctrl+/ 也可以实现一次多行注释
#注意是Ctrl+/不是Ctrl+#
# a=5
# print(a+True)
# print(a+False)
# a=1
# print(a+True)
以后部分解释就写在注释里了,继续说数据类型
python中的标准数据类型有五种,包括数字(Numbers)、字符串(string)、列表(List)、元组(Tuple)、字典(Dictionary)。这里先简单介绍一些基础。
Python变量不需要先定义,可直接使用,且不需要说明数据类型(系统自动判定)
这点与C大不相同,因为python的变量其实是指针,用变量名指向这些保存的数据。
-
有符号整型(int)
二进制:b 八进制:o 十六进制:x
#注意区分数字0和小写字母o
a=10
print(a)#输出语句
a=0b10
print(a)
a=0o10
print(a)
a=0x10
print(a)
#输出
#10
#2
#8
#16注:Python2中存在长整型(Long),python3中直接被int包含。
-
浮点数(float)
十进制小数转换成二进制小数有时并不能精确转换
a=2.1
print(a-2)
a=3.3
print(a-1.2)
#输出
#0.10000000000000009
#2.0999999999999996 -
复数(complex)
a=5-4j#要用j哦,不要习惯性用i
print(a.real)#取实部
print(a.imag)#取虚部
print(complex(4,-6))#用实部和虚部创建一个复数
#5
#-4
#4-6j1、2、3均属于Numbers
-
字符串(string)
字符串就是一系列字符。在Python中,用引号括起的都是字符串,其中的引号可以是单引号, 也可以是双引号。(这一点与C不同,python中没有字符类型)
-
布尔值(bool)
只有Ture和False(注意大小写)
python中可以对bool进行加减法运算
Ture为1,False为0
a=5
print(a+True,)
print(a+False)
#输出
#6
#5 -
空值
空值为None(不能看作是0)
学过C的不要搞成Null了。
-
列表,字典,元组及上文的一些拓展内容放在后面
三:输入与输出
1.输入
#输入值保存为字符串
n=input()
#有提示语的输入
n=input("请输入:")
#输入值保存为int
n=int(input())
#输入值保存为float
n=float(input())
#还没搞懂qwq
#n=eval(input())
#输入两个字符串,中间以空格分隔
a,b=input().split(" ")
#输入三个字符串,中间以逗号分隔
a,b,c=input().split(",")
#输入三个int值,中间以空格分隔
a,b,c=map(int,input().split(" "))
#输入三个int值,中间以逗号分隔
a,b,c=map(int,input().split(","))
#更详细的可以看这篇文章
#感谢原作者
#https://blog.csdn.net/qq_45817631/article/details/119717746
2.输出
普通输出
#采用print输出
#想必前面你也看到一些啦
#print里面可以放变量,常量,表达式等
print(1)
print("人生苦短,我学python")
#输出多个对象可以用逗号分隔
a=1
print("hello",a)
#hello 1
#对象之间默认以空格分隔
#可以用sep设置间隔符,例如“.”
a=1
print("hello",a,"world",sep=".")
#hello.1.world
#输出多个字符串不需要逗号
print("hello""world")
#可以用end设置行末
print("设置行末不换行",end="")
print("~~看没换吧")
#设置行末不换行~~看没换吧
#如果不写end,默认为end="\n"
#可以设置一些符号或字符串
print("123",end="biu")
print()#相当于换行
print("456",end="biu")
#123biu
#456biu
#如果将上面的print()改为print('\n')
#则会出现换两行的情况
格式输出
#插入变量
a=1
b="x^2=1(x>0)"
print("方程%s的解为x=%d" %(b,a))
#方程x^2=1(x>0)的解为x=1
#控制字段宽度和小数点位数
#先取小数点(小数点字段宽度为1哦)
#取小数点时四舍五入
#然后字段宽度不足10位,左侧加2个空格
PI=3.141592658979323846
print("%10.6f" %PI)
# 3.141593
#也可以用*来代替
a=10
b=4
PI=3.141592658979323846
print("%*.*f" %(a,b,PI))
# 3.1416
#左对齐
a=10
b=4
PI=3.141592658979323846
print("%-*.*f" %(a,b,PI))
#3.1416
#显示正号
a=10
b=4
PI=3.141592658979323846
print("%+*.*f" %(a,b,PI))
# +3.1416
#不够时用0补(仅右对齐,且0的位置不对劲?
a=10
b=4
PI=3.141592658979323846
print("%+0*.*f" %(a,b,PI))
#+0003.1416
a=33
c=321211221312123
PI="aa"
b='q'
print("%s %r %c %d %i %o %x %f %% %e %E %g %g %G %G " %(PI,PI,b,a,a,a,a,a,a,a,a,c,a,c));
#aa 'aa' q 33 33 41 21 33.000000 % 3.300000e+01 3.300000E+01 33 3.21211e+14 33 3.21211E+14
#二进制%b好像不能输出,有没有会的uu教一下qwq
#emm...好像只能采用函数?
print(bin(33)) #二进制
print(oct(33)) #八进制
print(hex(33)) #十六进制
#0b100001
#0o41
#0x21
格式符 | 说明 | 格式符 | 说明 |
---|---|---|---|
%s | 字符串采用str()的显示 | %o | 以八进制输出 |
%c | 输出字符 | %x | 以十六进制输出 |
%t | 制表符(一个Tab,即四个空格) | %f | 浮点数输出 |
%d | 以十进制输出 | %% | 输出% |
%i | 以十进制输出 | %r | 字符串(repr())的显示 |
%g | 指数(e)或浮点数(根据显示长度) | %G | 指数(E)或浮点数(根据显示长度) |
%e | 指数(基底写E) | %E | 指数(基底写E) |
四:符号
1.分号(;)
-
可以用于同一行显示多条语句。
print("hello,",end="");print("world!")
#hello,world!
2.反斜杆(\)
-
可以用于将一行语句分为多行显示。
a=33
c=321211221312123
PI="aa"
b='q'
print("%s %r %c %d %i \
%x %f %% %e %E \
%g %G %G %o %g" \
%(PI,PI,b,a,a,a, \
a,a,a,a,a,c,a,c));但语句中含有[],{},()时,无需使用\。
univ= ['ZJU', 'PKU', 'THU',
'FDU', 'SJTU']
#三非野捏~
3.引号(',",''',""")
-
字符串用单引号或者双引号括起来。
-
三个单引号或者双引号可以用于注释(详见上文)。
-
三个单引号或者双引号也可以用于输出多行。
str="""第一行
第二行"""
print(str)
str='''第一行
第二行'''
print(str)
#第一行
#第二行
#第一行
#第二行不要用企图双引号蒙混两个单引号,会报错滴!
#但可以善用引号输出引号 str='"第一,第二"' print(str) #"第一,第二"
4.等号(=)
-
用于给变量赋值
d=7
#可一次给多个变量赋值
a,b,c= 1,2.0,"hello" -
轻松交换a,b
a=1
b=2
a,b=b,a;
print(a," ",b);
5.加号(+)
-
数字加法
-
字符串串联
a="hello,"
b="world"
print(a+b)
#hello,world
6.减号(-)
-
数字减法
7.乘号(*)
-
数字乘法
-
两个乘号实现数字的幂
a=3
b=4
c=a**b
#a的b次方 -
重复打印字符串
a="hello"
b=2
print(a*3)
print(3*a)
print(a*3*2)
print(a*3*b)
print((a*3)*2)
#hellohellohello
#hellohellohello
#hellohellohellohellohellohello
#hellohellohellohellohellohello
#hellohellohellohellohellohello
8.除号(/)
-
数字除法,不会取整滴
注意:Python2里整数除整数,只能得出整数。如果要得到小数部分,要把其中一个数改成浮点数。
a=3
b=4
c=b/a
print(c)
#1.3333333333333333 -
双除号实现取商,向下取整
a=-3 b=4 c=b//a print(c) #-2
9.百分号(%)
-
用于格式化输出
-
取余
a=100
b=27
c=a%b
print(c)
a=4
b=-3
c=a%b
print(c)
#19
#-2
#没有搞懂为什么是-2 qwq
10.比较运算符
这部分比较简单,列个表即可~
运算符 | 说明 | 运算符 | 说明 |
---|---|---|---|
== | 判断是否相等 | != | 判断是否不相等 |
> | 大于 | < | 小于 |
>= | 大于等于 | <= | 小于等于 |
注意:python2中<>等于!=,python中已经不使用了。
11.位运算符
这部分比较简单,列个表即可~
运算符 | 说明(以a运算符b为例) | 运算符 | 说明 |
---|---|---|---|
& | 按位与,二进制按位相同为1 | ^ | 按位异或,二进制按位不同为1 |
| | 按位或,二进制按位有一个1,即为1 | ~ | 二进制按位取反 |
>> | 二进制右移b位 | << | 二进制左移b位 |
12.赋值运算符
这部分比较简单,列个表即可~
运算符 | 说明(以a运算符b为例) | 运算符 | 说明(以a运算符b为例) | |
---|---|---|---|---|
+= | a=a+b | -= | a=a-b | |
*= | a=a*b | /= | a=a/b | |
%= | a=a%b | //= | a=a//b | |
**= | a=a**b | >>= | a=a>>b | |
&= | a=a&b | |= | a=a|b | |
^= | a=a^b | << | a=a<<b |
13.逻辑运算符
这部分比较简单,列个表即可~
运算符 | 说明 | 运算符 | 说明 |
---|---|---|---|
and | 且 | or | 或 |
not | 非 |
14.身份运算符
这部分比较简单,列个表即可~
运算符 | 说明(以a运算符b为例) |
---|---|
is | 判断是否引自同一个对象,与id(a)==id(b)类似 |
is not | 判断是否引自不同对象,与id(a)!=id(b)类似 |
如果你有疑问,可以看看二.2.1前方下划线文字
关于成员运算符,用到的时候再说吧~
15.运算符优先级
挖个坑......
五:条件与循环
1.条件语句
-
基本形式
if(判断条件):
语句
else:
语句冒号别漏!!冒号别漏!!冒号别漏!!
指定任何非0和非空(null)值为True,0 或者 null为False。
判断语句的括号可以省略,
但省略后和if之间要用空格分开,
所以不建议省略(其实是po写C写多了,不习惯,忽略哈~。
语句可以多行,不必用{}包围,
但以缩进来区分表示同一范围。
注意python的缩进十分严格滴!!!
注意python的缩进十分严格滴!!!
注意python的缩进十分严格滴!!!
缩进的空白数量是可变的,但是同一代码块语句必须包含相同的缩进空白数量,
不过Tab和空格可以混用,毕竟一个Tab等于四个空格,
且else的代码块缩进不必与if代码块相同,毕竟不是同一代码块。
但不建议这样,毕竟要美观。
下面这个是合法滴:
a=1
if(a==1):
print(a)#按了一个Tab
print(a+1)#按了四个空格
else:
print(a+3)
#也可以写在同一行
#但若非很简单的语句,真的不建议
#因为不美观
#例如:
a=2
if(a==1):print(a);print(a+1)
else:print(a+3)
#好看的简单语句
a=1
if a==1: print(a+1)推荐写成这样:
a=1
if(a==1):
print(a)#按了一个Tab
print(a+1)#按了四个空格
else:
print(a+3) -
多重分支
#就是这样,没什么好说
#注意点与上面类似
if 条件1:
语句1
elif 条件2:
语句2
elif 条件3:
语句3
else:
语句4
2.while循环
-
基本形式
#注意点与if类似
while 判断条件:
语句 -
使用else语句的while
#在条件为False(即正常结束循环(看看下面的break))时会执行else
while 判断条件:
语句
else:
语句
3.for循环
先写一点基本的,后边再细说qwq
-
遍历数字范围
利用range函数
#range(start,end,step)
#i范围[1,100)即[1,99]
for i in range(1,100):
print(i)
#若range中只写一个数字则从0开始
for i in range(100):
print(i)
#i范围[0,100)
#可设置步长
#输出1到99的奇数
for i in range(1,100,2):
print(i)
#逆序输出100到1
for i in range(100,0,-1):
print (i) -
遍历字符串中字符
str="python"
for i in str:
print(i) -
使用else的for
#在条件为正常结束循环(看看下面的break)时会执行else
for ... in ...:
语句
else:
语句
4.break、continue、pass
-
break
跳出包含该break的循环,若该循环含else,else也不会执行。
-
continue
结束此轮循环,直接进入下一轮
-
pass
空语句(占位语句)
#例如如果你还没想好else中要写什么
#直接不写会报错的
str="python"
for i in str:
print(i)
else:
#可以写个pass占个位置
str="python"
for i in str:
print(i)
else:
pass
六.数据类型深入
1.字符串
-
取子串
str="python"
#字符下标从0开始哦
print(str[0])
#str[6]就越界了,会报错
print(str[5])
#左闭右开,故可以到6
print(str[3:6])
#左边不写就是从0开始
print(str[:4])
#右边不写就是输出到结束
print(str[4:])
#p
#n
#hon
#pyth
#on -
大小写
name="jupyter"
#首字母大写
print(name.title())
#全部大写
name=name.upper()
print(name)
#全部小写
name=name.lower()
print(name)
#Jupyter
#JUPYTER
#jupyter -
字符串串联
a="hello,"
b="world"
print(a+b)
#hello,world -
去空格
n=' python '
#去右空格
print(n.rstrip(),end='@\n')
#去左空格
print(n.lstrip(),end='@\n')
#去两侧空格
print(n.strip(),end='@\n')
# python@
#python @
#python@ -
成员运算
运算符 说明 in 如果在指定的序列中找到值返回 True,否则返回 False。 not in 如果在指定的序列中没有找到值返回 True,否则返回 False。 实例:
str="python"
if 'y' in str:
print("'y' in python")
if 'a' not in str :
print("'a' not in python")
#'y' in python
#'a' not in python -
原始字符串输出
一些字符串无法输出时,可以用r/R使其成功输出
print(r"1\n","\n2")
print(R"3\n")
#1\n
#2
#3\n -
字符比较
按位比较ASCII码
-
字符串内建函数
详见此文底部表格:
2.列表(List)
列表是python中的基本数据结构,其实前面早该讲了,po懒了~
-
创建列表
空列表
list1 = []
含数据的列表
list1 = [1,2,3,4]
list2 = ['a','ba','csa','d']
list3 = [1,2.0,3,4,'5','a','ba','csa','d'] -
访问与截取列表
与字符串下标一样,列表下标从0开始,也同样可以截取,也同样截取左闭右开区间。
list1 = [2,3,4,6,4]
print(list1[0],list1[3:4],list1[1:5],list1[3:])
#2 [6] [3, 4, 6, 4] [6, 4]
#直接输出整个列表
print(list1)
#[2, 3, 4, 6, 4]
#访问倒数第二个
print(list1[-2])
#6
university = ['zju','thu','pku','fdu','sjtu']
for uni in university :
print("I love %s."%uni.upper())
#I love ZJU.
#I love THU.
#I love PKU.
#I love FDU.
#I love SJTU. -
更新列表
用append()函数在末尾添加元素
list=[1,2,3,4]
list.append(5)
print(list[0:5])
#[1, 2, 3, 4, 5]用insert(index,obj)函数在指定位置添加元素
list=[1,2,3,4]
list.insert(2,5)
print(list[0:5])
#[1, 2, 5, 3, 4]用extend()函数在末尾链接另一个列表
list1=[1,2,3,4]
list2=[5,6,7,8]
list1.extend(list2)
print(list1)
print(list2)
#[1, 2, 3, 4, 5, 6, 7, 8]
#[5, 6, 7, 8]运算符赋值
list1=[1,2,3,4]
list2=[5,6,7,8]
list1+=list2
list2=list1
print(list1)
print(list2)
#[1, 2, 3, 4, 5, 6, 7, 8]
#[1, 2, 3, 4, 5, 6, 7, 8]range生成
list=list(range(1,9))
print(list)
#[1, 2, 3, 4, 5, 6, 7, 8] -
删除列表
用del语句删除指定位置元素
l = [1,2,3,4,5,6,7]
del l[1]
print(l)
del l[1:3]
print(l)
#[1, 3, 4, 5, 6, 7]
#[1, 5, 6, 7]用pop(index)函数移除指定位置元素
list1=[1,2,3,4]
list1.pop(0)
print(list1)
#不写index默认为末尾
list1.pop()
print(list1)
#[2, 3, 4]
#[2, 3]用remove(obj)删除第一个指定元素
list1=[1,2,1,3,4]
list1.remove(1)
print(list1)
#[2, 1, 3, 4]
#1已经不在list中了,会报错
list1.remove(1)
print(list1) -
零碎的点
运算符操作
#加与乘
list1=[1,2,3]
list2=[4,5,6]
list1+=list2
list2*=4
print(list1)
print(list2)
#成员运算符
if(3 in list1):
print("3 in list1")
if(9 not in list1):
print("9 not in list1")
#[1, 2, 3, 4, 5, 6]
#[4, 5, 6, 4, 5, 6, 4, 5, 6, 4, 5, 6]
#3 in list1
#9 not in list1其他看着比较有用的函数~
1.列表中元素个数 len()
list = [1,2,3,4,5,6,7]
len=len(list)
print(len)
#72.取最大最小max(),min()
list = [1,2,3,4,5,6,7]
print(max(list),min(list))
list = ['a','b','e','d']
print(max(list),min(list))
list = ['azvf','bzz','0e','zd']
print(max(list),min(list))
#7 1
#e a
#zd 0e3.统计出现次数count()
list = [1,2,3,4,1,1,'1',5,6,7]
print(list.count(1))
#34.反向列表元素 reverse()
list = [1,2,3,4,1,1,'1',5,6,7]
print(list)
list.reverse()
print(list)
#[1, 2, 3, 4, 1, 1, '1', 5, 6, 7]
#[7, 6, 5, '1', 1, 1, 4, 3, 2, 1]
#该函数返回值为None
#直接调用即可,不要再赋值给list
list = [1,2,3,4,1,1,'1',5,6,7]
print(list)
list=list.reverse()
print(list)
#[1, 2, 3, 4, 1, 1, '1', 5, 6, 7]
#None5.排序sort()
list = [3,4,1,5,7,8,6,2]
#默认为reverse为False,升序
list.sort()
print(list)
#降序
list.sort(reverse=True)
print(list)
#[1, 2, 3, 4, 5, 6, 7, 8]
#[8, 7, 6, 5, 4, 3, 2, 1]
#sort中其实有三个参数,有兴趣的可以自己研究一下
#list.sort(cmp=..., key=..., reverse=...)
#sort()与上面reverse相似,同样返回值为None
#临时排序
#排序后不改变原list
list = [3,4,1,5,7,8,6,2]
print(sorted(list,reverse=True))
print(list)
list=sorted(list)
print(list)
#[8, 7, 6, 5, 4, 3, 2, 1]
#[3, 4, 1, 5, 7, 8, 6, 2]
#[1, 2, 3, 4, 5, 6, 7, 8]
#可以看出sorted是有返回值的 -
求和sum()
list = [3,4,1,5,7,8,6,2]
print(sum(list))
#36
3.元组(tuple)
元组与列表类似,但元组使用圆括号。
-
创建元组
#空元组
tup=()
#仅含一个元素的元组
#元素后要加逗号
tup=(19,)
#多元素
tup1=(1,2,3,4,5) -
访问与截取
与列表相同,略。
-
修改
#仅能进行整个的赋值操作
tup1=(1,2,3,4,5)
tup2=(2,)
tup1=tup2+tup1
print(tup1)
tup1=tup2
print(tup1)
#(2, 1, 2, 3, 4, 5)
#(2,)
#修改单一元素语法错误
#tup[1]=0 -
删除
#仅能进行删除整个元组
tup1=(1,2,3,4,5)
del tup1
#删除单一元素语法错误 -
零碎的点
#加与乘
tup1=(1,2,3)
tup2=(4,5,6)
tup1+=tup2
tup2*=4
print(tup1)
print(tup2)
#成员运算符
if(3 in tup1):
print("3 in tup1")
if(9 not in tup1):
print("9 not in tup1")
#遍历
for i in tup1:
print (i,end=" ")
#函数
tup1=(9,2,3)
print(len(tup1))
print(max(tup1))
print(min(tup1))
#将列表转换为元组
list=[3,4,7,8]
print(list)
print(tuple(list))
#(1, 2, 3, 4, 5, 6)
#(4, 5, 6, 4, 5, 6, 4, 5, 6, 4, 5, 6)
#3 in tup1
#9 not in tup1
#1 2 3 4 5 6
#3
#9
#2
#[3, 4, 7, 8]
#(3, 4, 7, 8)
4.字典(Dictionary)
同一个字典中可以储存任意类型的对象
-
定义
#dic={key1:value1,key2:value2}
dic={1:'a',2:'b',3:'c'}
#键(key)唯一,如果重复,则后一个会覆盖前一个
dic={1:'a',2:'b',2:'c'}
print(dic[2])
#c -
访问
#按键取值
dic={1:'a','c':'b',3:'c'}
print(dic['c'])
#b -
修改与更新
#键不可修改,只可以修改值
dic={1:'a','c':'b',3:'c'}
dic[1]='ZJU'
dic['qwq']='orz'
print(dic)
#{1: 'ZJU', 'c': 'b', 3: 'c', 'qwq': 'orz'} -
删除
dic={1: 'ZJU', 'c': 'b', 3: 'c', 'qwq': 'orz'}
#删除一组键与值
del dic['c']
print(dic)
#清空字典
dic.clear()
print(dic)
#{1: 'ZJU', 3: 'c', 'qwq': 'orz'}
#{}
#删除字典
del dic
#再调用就报错了
#print(dic) -
dic={1: 'ZJU', 'c': 'b', 3: 'c', 'qwq': 'orz'}
#键数
print(len(dic))
#好懒...
#仙姑qwq
七.自定义函数
-
语法
def 函数名(参数):
语句
return [表达式]
#不带表达式return为None
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现