基本语法介绍
注释
-
单行注释:以# 开头,注释一整行,例如:
# 单行注释 print("hahaha")
-
多行注释:三个单引号 ‘’’ 或者三个双引号 “”" 将注释括起来。
''' 多 行 ''' """ 注 释 """
变量命名规则
- 只能由数字、字母和下划线组成,不能以数字开头。
- 不能使用系统关键字作为变量名。
- 变量名区分大小写
查看系统关键字:
from keyword import kwlist
print(kwlist)
标准数据类型
- Number(数字)
- String(字符串)
- List(列表)
- Tuple(元组)
- Set(集合)
- Dictionary(字典)
Number(数字):包括int(整型)、float(浮点型、bool(布尔型)、complex(复数)。
注:bool型中True=>1,False=>0。
String(字符串):用单引号’或双引号”括起来。
List(列表):写在方括号 [] 之间、元素之间用逗号分隔开。
Tuple(元组):写在小括号 () 之间、元素之间用逗号分隔开。
Set(集合):可以使用大括号 { } 或者 set() 函数创建集合。
Dictionary(字典):一种映射类型,字典用 { } 标识,它是一个无序的 键(key) : 值(value) 的集合。
——type():用于查看数据的数据类型
输入函数 input()
name = input("输入姓名") #函数返回值是一个字符串
输出函数 print()
print("hello world!")
连续输出数据时,print函数有两个参数:分隔字符串和结束字符串。
分隔字符串-sep:sep默认等于一个空格
结束字符串-end:end默认等于转义字符串换行(\n)
print(1, 2, 3) #输出1 2 3
print(1, 2, 3, sep="@") #输出1@2@3
print(1, 2, 3, end="\t") #输出1 2 3
格式化输出
name = '小陈'
age = 20
edu = '理工大学'
print('年龄为',age,'岁的',name,'考上了',edu)
# f-字符串(格式化字符串字面值)
content = f'年龄为{age}岁的{name}考上了{edu}'
print(content)
# format()方法
content1 = '年龄为{}岁的{}考上了{}'.format(age,name,edu)
print(content1)
输出结果均为 年龄为20岁的小陈考上了理工大学
运算符
Python常用运算符有算术运算符、赋值运算符、比较运算符和逻辑运算符
—— 算术运算符:+、-、*、/、//、%、**
/ 除运算得到的结果是一个浮点数
// 整除,即向下取整
% 求余数
** 幂运算
a = 45
b = 12
print(a + b) #结果为57
print(a - b) #结果为33
print(a * 2) #结果为90
print(a / 9) #结果为5.0
print(a // b) #结果为3
print(a % b) #结果为9
print(3 ** 2) #结果为9
print(4 ** 0.5) #结果为2.0
——比较运算符:==、!=、>、<、>=、<=,比较运算得到的结果是布尔值True或False
print(10 == 12) #False
print(10 != 12) #True
print(3 > 5) #False
print(3 < 6) #True
print(12 >= 10) #True
print(12 <= 10) #False
—— 逻辑运算符:and(逻辑与运算)、or(逻辑或运算)、not(逻辑非运算)
and – 链接两个条件,如果两个条件都成立,结果才为True,反之,结果为False。
短路操作:and左边的条件是False,直接判定整体是False
or – 链接两个条件,如果or两边的条件都不成立,结果是False,反之结果为True。
短路操作:or左边条件是True,直接判定整个条件是True
not – 取反
True and True # True
True and False
False and False
False and True
True or True
True or False
False or False # False
False or True
not True == False
not False == True
——赋值运算符:=、+=、-=、*=、/=、//=、%=、**=
- 所有的赋值运算符最终目的是给变量赋值
- 赋值运算符左边必须是变量,右边可以是任何有结果的表达式
- 复合赋值运算符左边必须是赋过值的变量,先算赋值运算符右边的,再算赋值运算符
a = 10
b = 3
a += b # 等价于a = a + b
a *= b + 2 # 等价于a = a * (b + 2)
运算符的优先级:
- 算术运算符:** > *、/、//、% > +、-
- 有小括号先算小括号里面的
- 算术运算符 > 比较运算符 > 逻辑运算符 > 赋值运算符
类型转换
转换为整型:
-
浮点型能够转整型。向小取整,不会进行四舍五入。
-
字符串能够转整型。只有去掉引号就是一个整数的字符串才能转整型。
-
布尔值能够转整型。True => 1;False => 0
print(int('123')) #123
print(int(True)) #1
print(int(12.3)) #12
转换为浮点型:
-
浮点型能够转浮点型。在整数后面添加.0。
-
字符串能够转浮点型。只有去掉引号就是数值的字符串才能转整型。
-
布尔值能够转浮点型。True => 1.0;False => 0.0
print(float('12.3')) #12.3
print(float('12.')) #12.0
print(float('.3')) #0.3
print(float('12')) #12.0
print(float(12)) #12.0
print(float(True)) #1.0
转换为布尔型:所有的数据都能转布尔值
- 能够转为Flase的数据:0、0.0、None、’’、[]、()、{}
- 其余都能转换为True
print(bool(0))
print(bool(0.0))
print(bool(''))
print(bool([]))
print(bool(()))
print(bool({}))
分支结构与循环结构
分支结构关键字有:if、else、elif
单分支结构:
if 条件1:
代码块1
else:
代码块2
三目运算符(单分支结构):
- 变量 = 结果1 if 条件 else 结果2
- 符合条件,变量的值为结果1,否则为结果2
多分支结构:
if 条件1:
代码块1
elif 条件2:
代码块2
elif 条件3:
代码块3
# ...
else:
代码块N
嵌套分支结构:
if 条件1:
代码块1
else:
代码块2
#代码块再写成分支结构的样式
分支结构实例
# 判断一个年份是否是闰年?
# 多分支结构
year = 1900
if year % 4 == 0 and year % 100 != 0:
print(f'{year}是闰年')
elif year % 400 == 0:
print(f'{year}是闰年')
else:
print(f'{year}是平年')
#单分支结构
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
print(f'{year}是闰年')
else:
print(f'{year}是平年')
#三木运算符
result = f'{year}是闰年' if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0) else f'{year}是平年'
print(result)
循环结构有关关键字有:for、in、while、break、continue、else
range():生成序列,是左闭右开区间,step默认为1
-
range(N):可以产生0到N-1范围的整数,N>0
for i in range(5): print(i) # 0 1 2 3 4
-
range(M,N):可以产生M到N-1范围的整数,M<N
for i in range(5,11): print(i) # 5 6 7 8 9 10
-
range(M,N,step):可以产生M到N-1范围的整数,从M开始每间隔 |step| - 1 个元素获取一个元素,M<N
for i in range(1,11,3): print(i) # 1 4 7 10
-
range(N,M,step):可以产生N到M-1范围的整数,从N开始每间隔 |step| - 1 个元素获取一个元素,N > M
for i in range(11,1,-3): print(i) # 11 8 5 2
for-in循环
for 变量 in 序列:
代码块
# 计算1-100的和
total = 0
for i in range(1, 101):
total += i
print(total)
while循环
while 条件:
代码块
# 猜数字游戏
import random
# randint()是一个闭区间
num = random.randint(1,100)
flag = True
while flag:
num_1 = int(input('请输入一个数字:'))
if num_1 > num:
print('再小一点')
elif num_1 < num:
print('再大一点')
else:
print('恭喜猜对了')
flag = False
for-else循环
# 案例:寻找100以内所有的素数(质数)
# 素数:只有1和本身两个因子,素数是从2开始的。
for i in range(2, 101):
if i == 2:
print('2是素数')
else:
for j in range(2, i):
if i % j == 0:
print(f'{i}不是素数')
break
else:
print(f'{i}是素数')
如果for循环正常结束,else语句被执行。for循环非正常结束,else语句不执行。
break、continue、pass的区别
——break:直接结束掉break所在循环(break停掉的时它上方离它最近的并且是所在的循环)
——continue:直接结束continue所在循环的当前循环,进入下一次循环
——pass:pass 不做任何事情,一般用做占位语句
列表
什么是列表?
- 列表是由一系列元素按照特定顺序构成的数据序列
- 列表中可以保存任意类型的数据,允许有重复元素
- 列表使用 [] 来包围数据,列表中的元素用 逗号 间隔
列表的性质
- 列表是有序的。有序即每个元素都存在独一无二的下标
- 列表是可变数据类型。可以对列表本身做修改(增删改)
列表基本操作:
-
列表的拼接
-
列表的重复
-
成员运算
-
列表比较大小
# 列表的运算 list1 = [35, True, 'abc', [3]] list2 = [1, 2, 3] # 1.列表的拼接 list3 = list1 + list2 print('列表拼接',list3) #列表拼接 [35, True, 'abc', [3], 1, 2, 3] # 2.列表的重复 list4 = list1 * 3 print('列表的重复',list4) #列表的重复 [35, True, 'abc', [3], 35, True, 'abc', [3], 35, True, 'abc', [3]] # 3.成员运算:in、not in # 成员运算结果是布尔值 print(3 in list1) # False print([3] in list1) # True # 4.列表的比较大小 list5 = [1, 2, 'abc', 5] list6 = [1, 2, 'abd', 5] print(list5 < list6) #True
列表的索引
- 索引从头开始,第一个索引是0,第二个索引是1,以此类推
- 索引从尾开始,最后一个索引是-1,往前一位索引是-2,以此类推
list = ['你', '也', '在', '学', 'python', '吗', '?']
print(list[0]) #你
print(list[4]) #python
print(list[-1]) #?
列表的切片
切片就是从原序列中拿出一段数据,拿出的数据整体的数据类型不变,step默认为1。
- 变量[M:] – 表示从下标为M的位置获取到最后
- 变量[:N] – 表示从起点取到 N-1 的位置(切片:左闭右开区间)
- 变量[:] – 表示从起点取到终点
- 变量[M:N:step] --表示从M取到N-1,每间隔 |step| - 1 个元素获取一个元素,如果step > 0的,M<N;反之,M>N
print(list[2:])
#['在', '学', 'python', '吗', '?']
print(list[:5])
#['你', '也', 在', '学', 'python']
print(list[1:7:2])
#['也', '学', '吗']
切片时,索引可以越界,但查看数据时索引不可以越界。
列表的遍历
-
直接遍历
for i in list1: print(i)
-
间接遍历
len():能够计算出序列的长度
for i in range(len(list1)): print(list1[i])
列表的相关方法
- count():统计某一个元素在列表中出现的次数
- index():查找某个元素在列表中的位置(下标)
- reverse():列表反转
- sort():列表排序,默认为升序,设置参数reverse=True,则是降序
列表的的增删改查
list = ['绿皮书', '美好人生', '怦然心动', '这个杀手不太冷', '楚门的世界']
-
增
-
append():追加
list.append('长津湖') #list=['绿皮书', '美好人生', '怦然心动', '这个杀手不太冷', '楚门的世界', '长津湖']
-
insert():插入
list.insert(1,'长津湖') #list=['绿皮书', '长津湖', 美好人生', '怦然心动', '这个杀手不太冷', '楚门的世界', '长津湖']
-
-
改(重新赋值)
list[2] = '霸王别姬' #list=['绿皮书', '长津湖', 霸王别姬', '怦然心动', '这个杀手不太冷', '楚门的世界', '长津湖']
-
查
index():从左向右查找元素,找到这个元素第一次出现的位置就停止查找返回下标,找不到报错。
#默认从开头开始找 index1 = movie_list.index('长津湖') print(index1) #指定开始查找的位置 index2 = movie_list.index('长津湖', 2) print(index2)
-
删
-
del
del movie_list[-1] #list=['绿皮书', '长津湖', 霸王别姬', '怦然心动', '这个杀手不太冷', '楚门的世界']
-
remove()
remove():根据指定的内容删除元素,某个元素多次出现,只删除第一次出现的该元素
movie_list.remove('长津湖')
-
pop()
pop():根据指定的下标删除元素,能够知道删除的是什么
content = movie_list.pop(-1) print(content) #楚门的世界
-
clear()
清空列表
list.clear()
-
列表推导式
在创建列表的同时向列表中添加元素。
列表推导式一般情况下代码简洁并且效率高,语法为:
[变量相关公式 for 变量 in 序列 (if 语句)]
实例:
-
利用列表推导式 存放指定列表中字符串的长度
list1 = ["good", "nice", "see you", "bye"] len_list = [len(i) for i in list1] #len_list = [4, 4, 7, 3]
-
利用列表推到是将列表中的整数提取出来
list2 = [True, 17, "hello", "bye", 98, 34, 21] new_list = [i for i in list2 if type(i) == int] #new_list = [17, 98, 34, 21]