Python基础语法系列导航
1.第一篇——开发环境、变量、数据类型、运算符介绍
2.第二篇——流程控制、循环、字符串介绍
3.第三篇——列表和元组介绍
4.第四篇——字典和集合介绍
5.第五篇——部分数据类型公共方法、生成式介绍
6.第六篇——函数介绍
7.第七篇——文件操作介绍
Python基础语法【第二篇】—流程控制、循环、字符串介绍
前言
Python基础语法笔记,记录一下学习过程
提示:以下是本篇文章正文内容,下面案例可供参考
04.if语句
1.if 的作用和语法
-
作用:条件语句,条件成立执行某些代码,条件不成立则不执行这些代码
-
语法:有冒号出现则注意缩进!
if 条件1: print("条件成立执行的语句1") if 条件2: print("条件成立执行的语句2")
-
体验:
if True: print("条件成立执行的语句1") # 下方的代码没有缩进,不属于if语句块里面 print("无论条件是否成立,我都会执行")
2.if … else…
-
作用:条件成立执行if下方的代码,条件不成立执行else下方的代码
-
语法:有冒号出现则注意缩进!
if 条件1: print("条件1成立执行的语句1") else: print("条件1不成立则执行的语句2")
3.elif
-
作用:多重判断配合else配合作用,一般else放在最后面,当以上条件均不成立的时候执行
-
语法:有冒号出现则注意缩进!
if 条件1: print("条件1成立执行的语句1") elif 条件2: print("条件2成立执行的语句2") elif 条件3: ..... else: print("以上条件均不成立执行的语句")
4.if嵌套
-
作用:一个大的 if 里面嵌套一个 if
-
应用场景:例如坐公交,有钱能上车,还要有空座位才能坐下,同时满足两个条件才成立
-
语法:有冒号出现则注意缩进!
if 有钱: print("上公交车了!") if 有空座位: print("真正坐公交了!")
-
执行流程:
5.random模块
-
作用:random是关于获取随机数的模块
-
语法:
# import 模块名 import random
-
常用函数:
# 变量名 = random.randint(开始,结束) # 获取从[1,5]的随机整数 int = random.randint(1,5)
6.三目运算符
-
作用:化简if…else…这种代码量,前提是成立后只有一句执行语句时
-
语法:
#条件成立执行的表达式 if 条件 else 条件不成立执行的语句 a = 1 b = 2 # 先看if条件,再看表达式结果 c = a if a > b else b print(c)
05.while循环
1.while的作用和语法
-
作用:高效多次重复执行某一行为代码块
-
语法:有冒号出现则注意缩进!
while 条件: 条件成立重复执行的代码1
-
注意:while条件里面要有条件递进表达式,否则会无限循环
i = 0 while i < 5: print("输出语句1") i += 1 # 条件递进表达式 # 下方的代码没有缩进,不属于while语句块里面 print("while成立如果不陷入死循环,我都会执行")
-
体验:以后的程序都按罗列需求-分析-编程的三部曲来,思路会清晰得多
# 需求:1-100数字累加 """ 分析: 1. 准备做加法运算的的数据1-100 增量为1 2. 准备变量保存将来运算的结果 3. 循环做加法运算 4. 打印结果 """ # 准备数字 i = 1 # 结果变量 result = 0 # 循环做加法运算 while i <= 100: #加法运算,前两个数的结果 + 第三个数 -- 每计算一次加法则更新一次result result += i #增量+1,避免陷入无限循环 i += 1 # 打印结果 print(result)
2.break和continue
break和continue是循环中满足一定条件退出循环的两种不同方式
2.1.break
-
作用:哪里有break,执行到break的时候就退出当前层次的循环
-
语法:
i = 0 while i < 2: print("我只能循环一次,因为下面有break. TAT") break # 执行后退出循环
2.2.continue
-
作用:哪里有continue,执行到continue退出当前一次循环不执行剩下语句,而去执行下一次循环
-
语法:
i = 0 while i < 5: if i == 2: print("我将是一个无限循环的语句,你思考下为什么?") continue # 思考后,你应当明白要在continue之前加上递进表达式.否则会陷入死循环 print("我只能执行2次") i += 1
3.while…else
-
作用:简化代码量,更直观。当while代码块执行完后,执行else语句块
-
语法:
while 条件: 条件成立重复执行的代码 递进语句 else: 循环正常结束之后要执行的代码
3.1.while…else之break
-
作用:综合运用
-
应用例子:
while 条件: 条件成立重复执行的代码 递进语句 if 条件: break else: 循环break后,这行代码不会执行,因为非正常终止循环结束
3.2.while…else之continue
-
作用:综合运用
-
应用例子:
while 条件: 条件成立重复执行的代码 递进语句 if 条件: 递进语句 continue else: 循环正常结束之后要执行的代码,唯一区别就是少了if成立后continue下面的语句
4.while循环嵌套
-
作用:外层循环控制着内层循环执行的次数
-
语法:
while 条件1: print("条件1成立执行的代码") while 条件2: print("条件2成立执行的代码")
-
应用场景:
# 一天刷3次碗,连续刷三天 j = 1 while j <= 3: i = 1 while i <= 3: print("这是第%d天第%d次刷碗筷" %(j, i)) i += 1 print(f"----第{ j }天结束了----") j += 1
-
练习:打印九九乘法表
# 需求:九九乘法表 """ 分析: 1. 九九乘法表类似于三角形 2. 1*1 = 1 1*2 = 2 2*2 = 4 1*3 = 3 2*3 = 6 3*3 = 9 3. 发现规律,第2个乘数是不变的,变的是第一个乘数 4. 编程 """ # 思考下为什么这样写,注释我不加了,自己一步步分析看看 i = 1 while i <= 9: j = 1 while j <= i: print(f"{j}*{i}="+str(j*i), end="\t") j += 1 print("\n") i += 1
06.for循环
1.for的作用和语法
-
作用:高效多次重复执行某一行为代码块,同while一样
-
语法:
for 临时变量 in 序列: print("重复执行的代码1")
-
注意:for循环里面无需递进表达式,它自己会自动递进的
str1 = "helloworld" for i in str1: print(i, end="..") # 输出:h..e..l..l..o..w..o..r..l..d..
2.break和continue
break和continue是循环中满足一定条件退出循环的两种不同方式
2.1.break
-
作用:哪里有break,执行到break的时候就退出当前层次的循环
-
语法:
str1 = "hello world" for i in str1: # 当遇到i=e的条件成立退出循环 if i == 'e': break print(i, end="..") # 输出:h..
2.2.continue
-
作用:哪里有continue,执行到continue退出当前一次循环不执行剩下语句,而去执行下一次循环
-
语法:
str1 = "hello world" for i in str1: # 当遇到i=e的条件成立时不执行剩下语句,而去重新执行下一次循环 if i == 'e': continue print(i, end="..") # 输出:h..l..l..o.. ..w..o..r..l..d..
3.for…else
-
作用:简化代码量,更直观。当for代码块执行完后,执行else语句块
-
语法:
for 临时变量 in 序列: 重复执行的代码 else: 循环正常结束之后要执行的代码
3.1.for…else之break
-
作用:综合运用
-
应用例子:
for 临时变量 in 序列: 重复执行的代码 if 条件: break else: 循环break后,这行代码不会执行,因为非正常终止循环结束
3.2.for…else之continue
-
作用:综合运用
-
应用例子:
for 临时变量 in 序列: 重复执行的代码 if 条件: continue else: 循环正常结束之后要执行的代码,唯一区别就是少了if成立后continue下面的语句
4.for循环嵌套
-
作用:外层循环控制着内层循环执行的次数
-
语法:
for 临时变量1 in 序列: print("重复执行的代码1") for 临时变量2 in 序列: print("重复执行的代码2")
5.总结
07.字符串
总结:字符串是不可变数据类型
1.认识字符串
字符串是 Python 中最常用的数据类型。我们一般使用引号来创建字符串。创建字符串很简单,只要为变量分配一个值即可。
-
字符串特征:
- 一对引号字符串
name1 = 'Tom' name2 = "Rose"
- 三引号字符串
name3 = ''' Tom ''' name4 = """ Rose """ a = ''' i am Tom, nice to meet you! ''' b = """ i am Rose, nice to meet you! """
注意:三引号形式的字符串支持换行。
思考:如果创建一个字符串
I'm Tom
?c = "I'm Tom" d = 'I\'m Tom'
-
字符串输出:print()
-
字符串输入:在Python中,使用
input()
接收用户输入
2.下标
“下标”
又叫“索引”
,就是编号。比如火车座位号,座位号的作用:按照编号快速找到对应的座位。同理,下标的作用即是通过下标快速找到对应的数据。
- 语法:
name = "abcdef"
print(name[1]) # b
print(name[0]) # a
print(name[2]) # c
注意:下标从0开始。
3.切片
切片是指对操作的对象截取其中一部分的操作。字符串、列表、元组都支持切片操作。
-
语法:
序列[开始位置下标:结束位置下标:步长]
注意:
1. 不包含结束位置下标对应的数据, 正负整数均可; 2. 步长是选取间隔,正负整数均可,默认步长为1; 3. 逆序第一个数据对应下标-1,倒数第二个-2,以此类推。
-
练习:
name = "abcdefg" print(name[2:5:1]) # cde print(name[2:5]) # cde print(name[:5]) # abcde print(name[1:]) # bcdefg print(name[:]) # abcdefg print(name[::2]) # aceg print(name[:-1]) # abcdef, 负1表示倒数第一个数据 print(name[-4:-1]) # def print(name[::-1]) # gfedcba
4.常用操作方法
字符串的常用操作方法有查找、修改和判断三大类,所有操作均有返回值。
4.1.查找
所谓字符串查找方法即是查找子串在字符串中的位置或出现的次数
-
find():检测某个子串是否包含在这个字符串中,如果在则返回这个子串开始的位置下标,否则则返回-1。
-
语法:
字符串序列.find(子串, 开始位置下标, 结束位置下标)
注意:开始和结束位置下标可以省略,表示在整个字符串序列中查找。
-
举例:
mystr = "hello world and itcast and itheima and Python" print(mystr.find('and')) # 12 print(mystr.find('and', 15, 30)) # 23 print(mystr.find('ands')) # -1
-
扩展:rfind()
和find()功能相同,但查找方向为==右侧==开始。
-
-
index():检测某个子串是否包含在这个字符串中,如果在返回这个子串开始的位置下标,否则则报异常。
-
语法:
字符串序列.index(子串, 开始位置下标, 结束位置下标)
注意:开始和结束位置下标可以省略,表示在整个字符串序列中查找。
-
举例:
mystr = "hello world and itcast and itheima and Python" print(mystr.index('and')) # 12 print(mystr.index('and', 15, 30)) # 23 print(mystr.index('ands')) # 报错
-
扩展:rindex()
和index()功能相同,但查找方向为==右侧==开始。
-
-
count():返回某个子串在字符串中出现的次数
-
语法:
字符串序列.count(子串, 开始位置下标, 结束位置下标)
注意:开始和结束位置下标可以省略,表示在整个字符串序列中查找。
-
举例:
mystr = "hello world and itcast and itheima and Python" print(mystr.count('and')) # 3 print(mystr.count('ands')) # 0 print(mystr.count('and', 0, 20)) # 1
-
4.2.修改
所谓修改字符串,指的就是通过函数的形式修改字符串中的数据
-
replace():替换,并返回一个字符串对象
-
语法:
字符串序列.replace(旧子串, 新子串, 替换次数)
注意:如果替换次数 > 查出子串出现次数,则替换次数为该子串出现次数。
-
举例:
mystr = "hello world and itcast and itheima and Python" # 结果:hello world he itcast he itheima he Python print(mystr.replace('and', 'he')) # 结果:hello world he itcast he itheima he Python print(mystr.replace('and', 'he', 10)) # 结果:hello world and itcast and itheima and Python print(mystr)
注意:这里看似字符串使用replace方法进行修改数据,实则是重新创建一个新的字符串对象,进行替换而已。我们数据按照是否能直接修改分为可变类型和不可变类型两种。字符串类型的数据修改的时候不能改变原有字符串,属于不能直接修改数据的类型即是不可变类型。不可变数据类型需要用变量对象来存装使用,而可变数据类型则直接用原先的对象即可。
-
-
split():按照指定字符分割字符串,并返回一个列表对象
-
语法:
字符串序列.split(分割字符, num)
注意:num表示的是分割字符出现的次数,即将来返回数据个数为num+1个。
-
举例:
mystr = "hello world and itcast and itheima and Python" # 结果:['hello world ', ' itcast ', ' itheima ', ' Python'] print(mystr.split('and')) # 结果:['hello world ', ' itcast ', ' itheima and Python'] print(mystr.split('and', 2)) # 返回2+1=3个 # 结果:['hello', 'world', 'and', 'itcast', 'and', 'itheima', 'and', 'Python'] print(mystr.split(' ')) # 结果:['hello', 'world', 'and itcast and itheima and Python'] print(mystr.split(' ', 2)) # 返回2+1=3个
注意:如果分割字符是原有字符串中的子串,分割后则丢失该子串。正如举例中and是原有字符串的子串,按and分隔,结果把and丢失了。
-
-
join():用一个字符或子串合并字符串,即是将多个字符串合并为一个新的字符串。
-
语法:
字符或子串.join(多字符串组成的序列)
-
举例:
list1 = ['chuan', 'zhi', 'bo', 'ke'] t1 = ('aa', 'b', 'cc', 'ddd') # 结果:chuan_zhi_bo_ke print('_'.join(list1)) # 结果:aa...b...cc...ddd print('...'.join(t1))
-
-
capitalize():将字符串第一个字符转换成大写。
-
语法:
字符串序列.capitalize()
-
举例:
mystr = "hello world and itcast and itheima and Python" # 结果:Hello world and itcast and itheima and python print(mystr.capitalize())
注意:capitalize()函数转换后,只字符串第一个字符大写,其他的字符全都小写。
-
-
title():将字符串每个单词首字母转换成大写。
-
语法:
字符串序列.title()
-
举例:
mystr = "hello world and itcast and itheima and Python" # 结果:Hello World And Itcast And Itheima And Python print(mystr.title())
-
-
lower():将字符串中每个单词大写转小写。
-
语法:
字符串序列.lower()
-
举例:
mystr = "hello world and itcast and itheima and Python" # 结果:hello world and itcast and itheima and python print(mystr.lower())
-
-
upper():将字符串中每个单词小写转大写。
-
语法:
字符串序列.upper()
-
举例:
mystr = "hello world and itcast and itheima and Python" # 结果:HELLO WORLD AND ITCAST AND ITHEIMA AND PYTHON print(mystr.upper())
-
-
lstrip():删除字符串左侧空白字符。
-
语法:
字符串序列.lstrip()
-
举例:
mystr = " hello world and itcast and itheima and Python" #"hello world and itcast and itheima and Python" print(mystr.lstrip())
注意:rstrip():删除字符串右侧空白字符。
strip():删除字符串两侧空白字符。
-
-
ljust():返回一个原字符串左对齐,并使用指定字符(默认空格)填充至对应长度的新字符串。
-
语法:
字符串序列.ljust(长度, 填充字符)
-
举例:
mystr = "hello" #"hello....." print(mystr.ljust(10, '.')) #"hello " print(mystr.ljust(10))
注意:rjust():返回一个原字符串右对齐,并使用指定字符(默认空格)填充至对应长度的新字符串,语法和ljust()相同。
-
-
center():返回一个原字符串居中对齐,并使用指定字符(默认空格)填充至对应长度的新字符串,语法和ljust()相同。
-
语法:
字符串序列.center(长度, 填充字符)
-
举例:
mystr = "hello" #"..hello..." print(mystr.center(10, '.')) #" hello " print(mystr.center(10))
-
4.3.判断
所谓判断即是判断真假,返回的结果是布尔型数据类型:True 或 False。
-
startswith():检查字符串是否是以指定子串开头,是则返回 True,否则返回 False。如果设置开始和结束位置下标,则在指定范围内检查。
-
语法:
字符串序列.startswith(子串, 开始位置下标, 结束位置下标)
-
举例:
mystr = "hello world and itcast and itheima and Python " # 结果:True print(mystr.startswith('hello')) # 结果False print(mystr.startswith('hello', 5, 20))
-
-
endswith()::检查字符串是否是以指定子串结尾,是则返回 True,否则返回 False。如果设置开始和结束位置下标,则在指定范围内检查。
-
语法:
字符串序列.endswith(子串, 开始位置下标, 结束位置下标)
-
举例:
mystr = "hello world and itcast and itheima and Python" # 结果:True print(mystr.endswith('Python')) # 结果:False print(mystr.endswith('python')) # 结果:False print(mystr.endswith('Python', 2, 20))
-
-
isalpha():如果字符串至少有一个字符并且所有字符都是字母则返回 True, 否则返回 False。
-
语法:
字符串序列.isalpha()
-
举例:
mystr1 = 'hello' mystr2 = 'hello12345' # 结果:True print(mystr1.isalpha()) # 结果:False print(mystr2.isalpha())
-
-
isdigit():如果字符串只包含数字则返回 True 否则返回 False。
-
语法:
字符串序列.isdigit()
-
举例:
mystr1 = 'aaa12345' mystr2 = '12345' # 结果: False print(mystr1.isdigit()) # 结果:True print(mystr2.isdigit())
-
-
isalnum():如果字符串至少有一个字符并且所有字符都是字母或数字则返回 True,否则返回 False。
-
语法:
字符串序列.isalnum()
-
举例:
mystr1 = 'aaa12345' mystr2 = '12345-' # 结果:True print(mystr1.isalnum()) # 结果:False print(mystr2.isalnum())
-
-
isspace():如果字符串中只包含空白,则返回 True,否则返回 False。
-
语法:
字符串序列.isspace()
-
举例:
mystr1 = '1 2 3 4 5' mystr2 = ' ' # 结果:False print(mystr1.isspace()) # 结果:True print(mystr2.isspace())
-
5.总结
- 下标
- 计算机为数据序列中每个元素分配的从0开始的编号
- 切片
序列名[开始位置下标:结束位置下标:步长]
- 常用操作方法
- 查找:
- find()
- index()
- count()
- 修改:
- replace()
- split()
- join()
- 查找:
总结
有误之处,欢迎指正。