前言
这个主要是记录复习python的基础
一、python语法结构
语句块缩进
Python 代码块通过缩进对齐表达代码逻辑而不是使用大括号
缩进表达一个语句属于哪个代码块
缩进风格:4个空格:非常流行,范-罗萨姆支持的风格
缩进
向右缩进,按【Tab】键
向左缩进,先按【Shift】,再很快按【Tab】
多行代码的缩进,选中,按如上操作即可
注释(ctrl+/)
Python 和很多 UNIX 脚本类似,注释语句从 # 字符开始
注释可以在一行的任何地方开始,解释器会忽略掉该行 # 之后的所有内容
二、print输出语句
基础语法
print(value, …, sep=’ ‘, end=’\n’, file=sys.stdout, flush=False)
value:值,输出的内容,可以有多个,用’,‘号分隔。
sep:显示时用于分隔的符号,在’'中间自定义。
end:这一条语句结束时输出的内容,默认为\n换行符。
file:输出流,默认为sys.stdout直接显示在控制台窗口上,可以替换为文件,直接将数据输出到文件中。
flush:是否强制刷新缓存到输出流里
eg:
>>> print('Hello World')
Hello World
# 可以用’+’连接两个字符串,但连接的类型要一样
>>> print('hello' + 'world')
helloworld
>>> print('Hello' + 123)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can only concatenate str (not "int") to str
>>> print('Hello' + '123')
Hello123
# 可以进行运算
>>> print(100 + 200)
300
>>> print(100*200-300/4)
19925.0
>>> print(100*(20+3)) # 括号可以正常使用
2300
# 打印两个字符串时,默认空格分开
>>> print('hello', '123')
hello 123
# sep修改连接符
>>> print('hello', '123', 'world',sep='...')
hello...123...world
# end 结束符,默认换行符
#!/usr/bin/python3
print('hello')
print('world')
/usr/bin/python3.10 /home/study/PycharmProjects/pythonProject1/hi.py
hello
world
#!/usr/bin/python3
print('hello', end='777')
print('world', end='333')
/usr/bin/python3.10 /home/study/PycharmProjects/pythonProject1/hi.py
hello777world333
三、input输入语句
input 接收用户从键盘输入的数据
基础语法
input(‘info’)
info:提示描述信息,可以描述这一个input语句需要输入什么内容。
ps:input获得的输入为字符串格式,不能直接用于数值运算,需要转换字符格式。
eg:
>>> input()
hello world
'hello world'
>>> input('请输入姓名:')
请输入姓名:zhangsan
'zhangsan'
# 可以将获得的值赋值给参数
>>> a=input('请输入姓名:')
请输入姓名:zhangsan
>>> print(a)
zhangsan
>>> b=input('请输入一个数字:')
请输入一个数字:5
>>> print(b+3)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can only concatenate str (not "int") to str
>>> print(int(b)+3)
8
四、变量
概念理解
变量相当于一个装数据的容器,里面的数据是可以变化的。
赋值格式 :
变量名 = 值
ps:变量在使用前必须赋值,只有赋值后的变量才会创建。
python中定义变量不用提前定义类型,赋值的时候使用什么类型,定义的变量就是什么类型。
变量名只能包含数字,字母和下划线_但不能以数字开头且私有变量最好一下划线开头,最好不使用内置关键字当变量名。
eg:
>>> a=1
>>> type(a)
<class 'int'>
>>> type(a)
<class 'str'>
>>> a=1.12
>>> type(a)
<class 'float'>
五、运算符
运算符分为算术运算符,比较运算符, 逻辑运算符。
算术运算符
完成基本算术运算使用的运算符,用来处理四则运算。
运算符 | 描述 | 案例 |
---|---|---|
+ | 加 | 1+1=2 |
- | 减 | 2-1=1 |
* | 乘 | 2×3=6 |
/ | 除 | 6/3=2 |
// | 取整数 | 返回除法整数部分8//3=2 |
% | 取余 | 返回除法余数部分8%3=2 |
** | 幂 | 次方,乘方, 2**3=8 |
eg:
>>> 8/3
2.6666666666666665
>>> 8//3
2
>>> 8%3
2
比较运算符
运算符 | 描述 |
---|---|
== | 等于,看两个操作数是否相等,是返回True |
!= | 不等于, 看两个操作数是否不相等, 是返回True |
> | 大于,看左操作数是否大于右操作数,是返回True |
< | 小于, 看左操作数是否小于右操作数,是返回True |
>= | 大于等于,看左操作数是否大于等于右操作数,是返回True |
<= | 小于等于,看左操作数是否小于等于右操作数,是返回True |
eg:
# 比较运算符也可连续使用
>>> 5>3
True
>>> 2<3<5
True
>>> 2<3>5
False
逻辑运算符
运算符 | 逻辑表达式 | 描述 |
---|---|---|
and | a and b | 只有a和b都为True,才会返回True,a,b有一个False,就返回False |
or | a or b | 只要a和b有一个True,就返回True,a,b都为False才返回False |
not | not a | a为True返回False,a为False返回True |
>>> 5 > 3 and 6 > 3
True
>>> 5 > 3 and 6 < 3
False
>>> 5 > 3 or 6 > 3
True
>>> 5 > 3 or 2 > 3
True
>>> 5 < 3 or 6 < 3
False
>>> not 5 > 3
False
>>> not 5 < 3
True
六、 数据类型
数据类型分为数字类型,字符串类型,列表类型,元组类型, 字典类型,集合类型。这里只介绍数字类型,字符串类型,列表类型。
数字类型
数字类型分为:
int : 有符号整数型
bool : 布尔值(0,1)
float : 浮点型(小数型)
int
python中默认为十进制显示,加前坠表示为其他进制显示。
2进制数: 以0b或0B开头,只有0,1,2表示为10
8进制数 : 以0o或0O开头, 0-8,9表示为10
16进制 : 以0x或0X开头, 0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f, 16表示为10
# 十进制11表示为11
>>> 11
11
# 二进制11表示为1011,计算方式为2**3+2**1+2**0=11,转换一下就是
2**3 2**2 2**1 2**0
1 0 1 1
使用2的n次方相加的方式
>>> 0b1011
11
# 8进制11表示为0o13,计算方式为1*(8**1)+3=11,同2进制类似但最后不足8的直接写
8**1 8**0
1 3
使用8的n次方相加的方式
>>> 0o13
11
# 16进制10到15表示为a,b,c,d,e,f。16进制11504表示为0x2cf0计算方式为
2*(16**3)+12*(16**2)+15*(16**1)+0*(16**0)=8192+3072+240+0=11504转换一下为
16**3 16**2 16**1 16**0
2 12 15 0
2 c f 0
使用16的n次方相加的方式
>>> 0x2cf0
11504
在python中有直接转化进制的函数
# bin(),将10进制转换为2进制
>>> bin(100)
'0b1100100'
# oct(),将10进制转换为8进制
>>> oct(100)
'0o144'
# hex(),将10进制转换为16进制
>>> hex(100)
'0x64'
# int(num.2/8/16) 将2/8/16进制转化为10进制
>>> int('10101101101', 2)
1389
>>> int('0o73247', 8)
30375
>>> int('0xa9c87', 16)
695431
bool
bool值只有两个1和0,其中1代表真(True), 0代表假(False),主要用于逻辑运算。
字符串
python中字符串定义为引号之间的字符集合,单引号和双引号作用相同,三引号(三个连续的单引号或双引号)可以用来包含特殊字符。
ps:字符串的引号必须成对出现
三引号可以保护用户输入格式(原样输出),但不能单双混用
eg:
print(
'''
zhangsan
lisi
wangwu
'''
)
/usr/bin/python3.10 /home/study/PycharmProjects/pythonProject1/day1/test2.py
zhangsan
lisi
wangwu
# 双引号可以输出包含单个单引号内容
>>> print("hello nfx, I'm your baby~")
hello nfx, I'm your baby~
# 单引号也可包含双引号的内容
>>> print('lisa : "you are the best"')
lisa : "you are the best"
# 三引号可以解决符号冲突
>>> print("""hello "nfx", I'm your baby~""")
hello "nfx", I'm your baby~
字符串索引和切片
使用索引运算符 [ ] 和 切片运算符 [ : ] 可得到子字符串
字符串索引
字符串的下标从0开始,子字符串包含切片中的起始下标,但不包含结束下标。
eg:一个字符串变量str1=”hello world!“
h e l l o w o r l d !
0 1 2 3 4 5 6 7 8 9 10 11
-12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1
str1[n],n代表下标,可以直接提取字符串中的一个符号
eg
>>> print(str1[0])
h
>>> str1="hello world!"
>>> print(str1[2])
l
# 空格也算一个字符
>>> print(str1[5])
>>> print(str1[8])
r
想要直接获取最后一个字符串,可以用-1来直接获取最后一个字符,-1代表逆序第一个字符。
>>> print(str1[-1])
!
>>> print(str1[-4])
r
ps:顺序是从0开始,逆序从-1开始,注意下标,不要写错下标
也可以使用len函数直接获取字符串的长度(有多少个字符)然后得到结束下标
eg:
>>> len(str1)
12
ps: len得到的是总字符数,是从1开始,要转换为对应下标,需要减1
字符串切片
语法格式:
字符串 [ 起始索引 : 终止索引 : 步长 ]
特点:含头去尾,能获取到起始索引位置上的元素,获取不到终止索引上的元素
通常只写头和尾,不写步长,步长默认为1
eg:
# 输出从第1个到第8个字符
>>> print(str1[0:8])
hello wo
# 输出从第1个到倒数第4个字符
>>> print(str1[0:-4])
hello wo
# 不写头尾,默认全部
>>> print(str1[:])
hello world!
# 步长为2,隔一个输出
>>> print(str1[::2])
hlowrd
# 步长为-1,逆序输出
>>> print(str1[::-1])
!dlrow olleh
#综合从第3个字符(包含)开始到倒数第1个字符(不包含),每隔2个输出
>>> print(str1[2:-1:2])
lowrd
ps: 逆序输出要反向指定范围,否则不能显示
# 从倒数第2个开始,到倒数第8个(不包含)结束,逆序输出
>>> print(str1[-2:-8:-1])
dlrow
# 从倒数第2个开始,到倒数第8个(不包含)结束,逆序每隔一个输出
>>> print(str1[-2:-8:-2])
drw
# 从倒数第2个开始,到正数第3个(不包含)结束,逆序每隔一个输出
>>> print(str1[-2:2:-2])
drwo
字符串连接操作
使用+号将多个字符串拼接为一个字符串
使用*可以将一个字符串重复多次
eg:
# 用+号将str1和str2拼接在一起
>>> str1="hello "
>>> str2="world"
>>> str1+str2
'hello world'
ps:拼接一样要相同数据类型
# 使用*号将str1打印5次
>>> str1="hello world"
>>> str1 * 5
'hello worldhello worldhello worldhello worldhello world'
可以使用in和not in判断字符是否处于变量的范围之内,使用in,True为在,False为不在。使用not in ,True为不在,False为在。
eg:
>>> 'a' in str1
False
>>> 'e' in str1
True
>>> 'word' in str1
False
>>> 'world' in str1
True
>>> 'a' not in str1
True
>>> 'e' not in str1
False
列表
List(列表) 是 Python 中使用最频繁的数据类型,在其他语言中通常叫做数组
列表专门用于储存一串信息,能保存任意数量,任意类型的python对象
列表使用[ ]定义,数据之间用’,'分隔,列表中的项目可以改变且列表的索引下标也是从0开始。
列表的拼接和查看修改
eg:
>>> alist=['zhangsan', 'lisi', 'wangwu']
>>> alist
['zhangsan', 'lisi', 'wangwu']
>>> type(alist)
<class 'list'>
ps:列表也可以拼接,且列表的拼接也需要相同类型,即列表必须拼接列表。
列表的拼接和字符串一样,只是输出在一起,但是列表内容不会改变
>>> blist=['xiaohong', 'limei', 'hanleilei']
>>> alist + blist
['zhangsan', 'lisi', 'wangwu', 'xiaohong', 'limei', 'hanleilei']
>>> alist + 'lilei'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can only concatenate list (not "str") to list
查看列表数据和查看字符串也一样,alist[n],n代表下标
eg:
>>> alist[1]
'lisi'
>>> alist[-1]
'wangwu'
>>> alist[::2]
['zhangsan', 'wangwu']
>>> alist[::-1]
['wangwu', 'lisi', 'zhangsan']
修改列表数据使用 列表索引=新值的方式,相当于将新的值覆盖原有的值
>>> alist[1]='nijika'
>>> alist[1]
'nijika'
>>> alist
['zhangsan', 'nijika', 'wangwu']
列表的操作
使用in或not in判断成员关系
使用in或not in只能判断单个元素,不能判断多个元素,且必须是一个完整的元素
eg:
>>> 'n' in alist
False
>>> 'nijika' in alist
True
>>> 'nijika' not in alist
False
列表的添加和删除
列表使用append函数添加数据,使用insert在指定位置添加一个元素,使用remove删除第一个符合的元素,使用pop删除并返回指定位置元素,使用clear清空,使用del删除。
>>> alist=[1,2,3,4]
>>> alist.append(5)
>>> alist
[1, 2, 3, 4, 5]
>>> alist.insert(2,6)
>>> alist
[1, 2, 6, 3, 4, 5]
# insert位置是在指定第几个元素后面,与下标不同,不用-1
>>> alist.insert(2,3)
>>> alist
[1, 2, 3, 6, 3, 4, 5]
>>> alist.remove(3)
>>> alist
[1, 2, 6, 3, 4, 5]
# 使用pop删除指定位置是使用的下标定位,所以删除下标为2的元素为删除第3个元素
>>> a=alist.pop(2)
>>> a
6
>>> alist
[1, 2, 3, 4, 5]
# 清空数组
>>> alist.clear()
>>> alist
[]
# 使用del删除数组后无法再使用数组,显示未not defiend未定义
>>> del alist
>>> alist
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'alist' is not defined. Did you mean: 'blist'?
总结
记录复习python的过程