Python笔记_04_代码块_流程控制_分支结构_循环结构_字符串操作

代码块

以冒号作为开始,用缩进来划分相同的作用域,称之为代码块,代码块是一个整体,一个文件也可称代码块
作用域:作用的区域
其他语言使用 { } 来划分作用域 , 而python使用的是代码块
python的代码块可以提升整体的整齐度,提高开发效率

# python
if 5 == 5:
    print(1)
    print(2)

if True:
    print(3)
    print(4)


if False:
    print(5)
    print(6)
    print(7)
# php c js
if(False){
	print(5)
				print(6)
}

注意点: 要么全部使用4个空格,要么全部使用1个缩进 ,这样才叫同一个作用域不能混写

流程控制

  1. 流程控制的定义
    流程: 代码执行的过程
    流程控制: 对代码执行的过程进行管控
  2. 流程控制的结构
    顺序结构: 代码默认从上到下依次执行
    分支结构: 细分如下
    循环结构: while … for …

分支结构

关键字:if elif else

  • 分支结构的种类
  1. 单项分支
  2. 双项分支
  3. 多项分支
  4. 巢状分支
  • 分支结构的特点
单项分支
if  条件表达式:
	code1
	code2

如果条件表达式成立,返回True 执行下面的代码块,
如果条件表达式不成立,返回False 不执行下面代码块

zhangyaowen = "帅哥"

if zhangyaowen == "帅哥":
    print("请你吃烤串")
    print("请你喝啤酒")
    print("请你吃大腰子")
双项分支
if 条件表达式:
	code1
	code2
else:
	code3
	code4

如果条件表达式成立,执行if下面的代码块
如果条件表达式不成立,执行else下面的代码块

if中的代码块可以称之为真区间
else中的代码块可以称之为假区间

zhangyaowen = "野兽"
if zhangyaowen == "盲流子":
    print("打他")
    print("掐他")
    print("吊起来,喂他辣椒水")
else:
    print("哄他")
    print("爱他")
    print("骗他兜里的钱")

# input  等待用户输入字符串
res = input("请输入您的姓名:")
print(res, type(res))

练习:提示用户输入用户名和密码:
如果用户名是admin , 并且密码是000 ,
提示用户恭喜你,登陆成功
否则提示用户名或密码错误

username = input('please enter your username:')
pswd = input('please enter your password:')
if username == 'admin' and pswd == '000':
    print('登陆成功!')
else:
    print('登录名或密码输入错误,登陆失败!')
多项分支
f 条件表达式1:
	code1
	code2
elif 条件表达式2:
	code3
	code4
elif 条件表达式3:
	code5
	code6	
...
	
else:
	code7

如果条件表达式1成立,直接执行if当中的代码块,如果不满足
依次向下判断,看是否条件表达式2成立,成立则执行对应代码块,
反之,继续向下判断 条件表达式3 ,如果成立执行对应代码块,
反之,继续向下判断 如果都没有满足的条件,直接执行else中的代码块

youqian = False
youfang = False
youche = False
youyanzhi = False
youtili = False

if youqian == True:
	print("我就嫁给他1")
elif youfang == True:
	print("我就嫁给他2")
elif youche == True:
	print("我就嫁给他3")
elif youyanzhi == True:
	print("我就嫁给他4")
elif youtili == True:
	print("我就嫁给他5")
else:
	print("快走吧脑弟,一会赶不上二路汽车了6")
巢状分支

(单项分支 双项分支 多项分支互相嵌套使用)

youqian = True
youfang = True
youche = True
youyanzhi = False
youtili = True

if youqian == True:
	if youfang == True:
		if youche == True:
			if youyanzhi == True:
				if youtili == True:
					print("你就是我的如意郎君,1")
				else:
					print("恭喜你,我的1号备胎2")
			else:
				print("我向来与丑的人无缘,没缘分3")
				
else:
	print("你是个大好人啊4")

循环结构

关键字:while / for…in…

  • 循环结构的种类
  1. while 循环
  2. for 循环
  • 循环结构的特点
while 循环

可以提高代码的效率,减少代码的冗余

while 条件表达式:
	code1
	code2

如果条件表达式成立,返回True , 就执行其中的代码块

基本语法:打印1 ~ 100

# (1)初始化变量i
i = 1
# (2)写循环判断条件
while i <= 100:
    print(i)
    # (3)自增自减的条件
    i += 1
"""
# 代码解析:
首先初始化i = 1
然后判断 1<=100 满足 返回True 执行代码块
然后print(1)
i+=1 i = i+1 i=> 2

回到条件表达式当中进行判断 也就是回到16行
2 <= 100 满足 返回True 执行代码块
然后print(2)
i+=1 i = i+1 2+1 i =>3

回到条件表达式当中进行判断 也就是回到16行
3 <= 100 满足 返回True 执行代码块
然后print(3)
i+=1 i = i+1 3+1 i =>4

...
...
什么时候跳出条件?
当i = 101的时候
101 <= 100  不满足 返回False 不执行代码块
循环终止...
"""

1~100的累加和

# (1)第一种方法
i = 1
total = 0
while i <= 100:
    # 写上逻辑
    # print(i)
    total += i
    i += 1
print(total)

'''
# 代码解析:

total += i => total = total + i => 0 + 1 => 1
i+=1 => i = i+1 => 1+1 => 2
2 <= 100 满足 返回真True

total += i => totoal = total + i => 0 + 1 + 2 => 3
i+=1 => i = i+1 => 2+1 => 3
3 <= 100 满足 返回真True

total += i => totoal = total + i => 0 + 1 + 2 + 3 => 6
i+=1 => i = i+1 => 3+1 => 4
4 <= 100 满足 返回真True

total += i => totoal = total + i => 0 + 1 + 2 + 3 + 4 + 5 + ...+ 100 => 5050

当i = 101 的时候
101 <= 100 不满足 循环终止...

'''
# (2) 死循环写法
# while True:
# print(1)

i = 1
flag = True
total = 0
while flag:
    total += i
    i += 1
    # 添加一个能够跳出的条件
    if i == 101:
        flag = False

print(total)
for 循环

循环 遍历 迭代

# while 的遍历方式
listvar = ["黄雄达", "黄文", "黄仪正", "黄少正", "黄广雄", "黄将用"]
i = 0
while i < len(listvar) :
	res = listvar[i]
	print(res)
	i += 1

while 循环有它的局限性,不能够遍历集合这样的数据类型
所以 for 循环应用而生 特指用来遍历的

for 变量 in 可迭代的对象:
	print(变量)

容器类型数据是可迭代性对象的一种.后期我们还学迭代器 生成器 range对象

# 遍历列表
container = ["黄雄达", "黄文", "黄仪正", "黄少正", "黄广雄", "黄将用"]
# 遍历元组
container = ("黄雄达", "黄文", "黄仪正", "黄少正", "黄广雄", "黄将用")
# 遍历集合
container = {"黄雄达", "黄文", "黄仪正", "黄少正", "黄广雄", "黄将用"}
# 遍历字典  :  默认遍历字典时,遍历的是键
container = {'top': '亚瑟', "middle": "王军", "bottom": "黄雄达"}
# 遍历字符串
container = "我爱你亲爱滴菇凉,见到你我就心慌"
for i in container:
    print(i)
  • 遍历等长的二级容器
    变量的解包

    a, b = 1, 2
    print(a, b)
    a, b = [3, 4]
    print(a, b)
    a, b = {5, 6}
    print(a, b)
    
    listvar = [("王健林", "王思聪", "王美丽"), ["马云", "马华疼", "马美丽"], ["王宝强", "马蓉", "宋小宝"]]
    for a, b, c in listvar:
        '''
        a,b,c = ('王健林', '王思聪', '王美丽')
        a,b,c = ["马云","马华疼","马美丽"]
        a,b,c = ["王宝强","马蓉","宋小宝"]
        '''
        print(a, b, c)
    
    
  • 遍历不等长的二级容器

    listvar = [("王健林", "王思聪", "王美丽"), ["马云", "马华疼"], ["王宝强"]]
    for i in listvar:
        for j in i:
            print(j)
    
    
  • range 对象
    语法:

    range(start,end,step)
    	start:开始值
    	end  :结束值
    	step :步长
    

    使用方式和切片语法类似,高位end那个值取不到,取到end之前的那个值

    # 1个参数的情况 range(5) => 0 1 2 3 4 默认从0开始 高位5取不到,最大取到4
    print(range(5), type(range(5)))
    res = list(range(5))
    print(res)
    for i in range(5):
        print(i)
    
    # 2个参数的情况
    for i in range(3, 10):
        print(i)
    
    # 3个参数的情况 2 4 6 8 10
    '''正序'''
    for i in range(2, 11, 2):
        print(i)
    '''倒序'''
    # 打印9~1   9 8 7 6 5 4 3 2 1
    for i in range(9, 0, -1):
        print(i)
    

字符串相关操作

  1. 字符串的拼接

    strvar1 = "我爱你,"
    strvar2 = "亲爱的菇凉"
    res = strvar1 + strvar2
    print(res)
    
    
  2. 字符串的重复

    strvar1 = "重要的事情说三遍"
    res = strvar1 * 3
    print(res)
    
  3. 字符串跨行拼接

    str1 = "sdfsssssssssssssssssssssssssssssssssssssssssssss" \
        "sssdsfsdfasdf" \
        "你说的手"
    print(str1)
    
  4. 字符串的索引

    #         0 1 2 3 4 5
    strvar = "道路一片光明"
    #        -6-5-4-3-2-1
    res = strvar[4]
    print(res)
    res = strvar[-2]
    print(res)
    
  5. 字符串的切片
    语法 => 字符串[::] 完整格式:[开始索引:结束索引:间隔值]

    strvar = "爱往者爱返,福往者福来"
    #(1)[开始索引:]  从开始索引截取到字符串的最后
    res = strvar[3:]
    print(res)
    
    #(2)[:结束索引]  从开头截取到结束索引之前(结束索引-1)
    res = strvar[:5]
    print(res)
    
    #(3)[开始索引:结束索引]  从开始索引截取到结束索引之前(结束索引-1)
    res = strvar[6:9]
    print(res)
    
    #(4)[开始索引:结束索引:间隔值]  从开始索引截取到结束索引之前按照指定的间隔截取字符
    # 爱者返福者
    # 0 2 4 6 8  爱 者 返 福 者
    res = strvar[0:9:2]
    print(res)
    # end 不写意味着截取到最后
    # 3 6 9 爱 福 福
    res = strvar[3::3]
    print(res)
    
    # start 开始索引不写,意味着从头开始
    # 0 4 爱返
    res = strvar[:7:4]
    print(res)
    
    # 0 2 4 6 8 10  爱者返福者来
    strvar = "爱往者爱返,福往者福来"
    res = strvar[::2]
    print(res)
    
    # 倒叙 -1 -2 -3 -4 ...
    res = strvar[::-1]
    print(res)
    
    # (5)[:]或[::]  截取所有字符串
    res = strvar[:]
    res = strvar[::]
    print(res)
    
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值