Python控制结构

分行与缩进

顺序结构

选择结构

先判断在执行
if 条件:
else:
多分支:if 条件:
elif 条件:
else

import sys

age = int(input('请输入你的年龄'))

if age < 18 :
    print("你还未成年,建议在家长陪同下使用该软件")
    print("如果你已经得到了家长的同意,请忽略以上提示")
    sys.exit()
else:
    print("你已经成年,可以使用该软件")
    print("时间宝贵,请不要在该软件上浪费太多时间")
print("软件正在使用中")

# 请输入你的年龄11
# 你还未成年,建议在家长陪同下使用该软件
# 如果你已经得到了家长的同意,请忽略以上提示

# 请输入你的年龄22
# 你已经成年,可以使用该软件
# 时间宝贵,请不要在该软件上浪费太多时间
# 软件正在使用中

#判断一个人的身材是否合理
height = float(input("输入身高(米):"))
weight = float(input("输入体重(千克):"))
bmi = weight / (height * height) #计算BMI指数

if bmi < 18.5:
    print("BMI指数为:" + str(bmi))
    print("体重过轻")
elif bmi >= 18.5 and bmi < 24.9:
    print("BMI指数为:" + str(bmi))
    print("正常范围,注意保持")
elif bmi >= 24.9 and bmi < 29.9:
    print("BMI指数为:" + str(bmi))
    print("体重过重")
else:
    print("BMI指数为:" + str(bmi))
    print("肥胖")
# 输入身高(米):1.62

# 输入体重(千克):55.5
# BMI指数为:21.147690900777317
# 正常范围,注意保持

pass语句

某些地方还不确定时,使用pass直接先跳过这些地方

age = int( input("请输入你的年龄:") )
if age < 12 :
    print("婴幼儿")
elif age >= 12 and age < 18:
    print("青少年")
elif age >= 18 and age < 30:
    print("成年人")
elif age >= 30 and age < 50:
    pass
else:
    print("老年人")
#40

assert语句

assret语句,断言语句,缩小版if语句,用于判断某个表达式的值,如果值为真,则程序继续往下执行,反之会出现AssertionError错误

assert表达式
等价于
if 表达式 == True:
程序继续执行
else:
程序报AssertionError错误

mathmark = int(input())
assert 0 <= mathmark <= 100
print("数学成绩为:",mathmark)

循环结构

While循环

     [init_statements]
     while 条件:
		   body_statements
		  [iteration_statements]

·while 循环在每次执行循环体之前,都要先对 test_expression循环条件求值,如果循环条件为真,则运行循环体部分。从上面的语法格式来看,迭代语句 iteration_statements总是位于循环体的最后,因此只有当循环体能成功执行完成时,while 循环才会执行迭代语句 iteration_statements。
·条件为假才会跳出循环

#循环的初始化条件
count_i = 0
#当count_i小于10时,执行循环体
while count_i < 10:
    print("count:",count_i)
    #迭代语句
    count_i += 1
print("循环结束!")
count: 0
# count: 1
# count: 2
# count: 3
# count: 4
# count: 5
# count: 6
# count: 7
# count: 8
# count: 9
# 循环结束!

使用while循环遍历列表和元组

遍历元组的所有元素

a_tuple = ('apple','book','a')
i = 0
#只有当i小于len(a_tuple),继续执行循环体
while i < len(a_tuple):
    print(a_tuple[i]) #根据i来访问元组的元素
    i += 1

# apple
# book
# a

整数列表的元素分类:能整除3的放入一个列表中;除以3余1的放入另一个列表,除以3余2的放入第三个列表中

src_list = [12,45,34,13,100,24,56,74,109]
a_list = [] #整除3的元素
b_list = [] #除以3余1
c_list = [] #除以3余2
#只要src_list还有元素,继续执行循环体
while len(src_list) > 0:
    #弹出src_list最后一个元素
    ele = src_list.pop()
    #如果ele % 2不等于0
    if ele % 3 == 0:
        a_list.append(ele)
    elif ele % 3 ==1:
        b_list.append(ele)
    else:
        c_list.append(ele)
print("整除3:",a_list)
print("除以3余1:",b_list)
print("除以3余2:",c_list)

for-in循环

for 迭代变量 in字符串|列表|元组|字典|集合:
·····代码块

print( ,end = ’ ’ ) 不以换行符结束,而是以空格的形式输出

add = "i'm a student"
#for循环,遍历add字符串
for ch in add:
    print(ch,end = '' )
#i'm a student

法一: range()函数
for 变量名 in range(5)
代码块

  • range()函数可创建一个整数列表与for结合使用,指明重复执行范围

  • r(5):0,1,2,3,4 无5
    range(1,5):1,2,3,4 无5 右边数-左边数
    range(1,5,2):1,3 等差数列,差值写在最右边

range(start,end,step = 1)
patients = [“Alice”,”Bob”,”Cathy”,”Eric”]
for index in range(len(patients)):
print(index,patients[index]) 获取列表中的元素

执行时,依次把range列表中的元素赋值给变量
len (变量) 获取变量列表中的总个数

例子

1.for循环进行数值循环:1~100的累加

print("计算1+2+...+100的结果为:")
#保存累加结果的变量
sum = 0
for i in range(101):
    sum += i
print(sum)

2.for循环遍历列表和元组

for_list = [1,2,3]
for i in for_list:
    print('ele = ',i)

3.for循环遍历字典
直接遍历字典与keys相同,可用items()和values()方法

for_dic = {'身高(cm)':162,'体重(kg)':56}
for i in for_dic:
    print('ele=',i)
# ele= 身高(cm)
# ele= 体重(kg)
#直接遍历字典,和遍历字典keys()方法的返回值相同
#遍历values()、items()方法的返回值
for i in for_dic.items():
    print('ele=',i)
# ele= ('身高(cm)', 162)
# ele= ('体重(kg)', 56)
for i in for_dic.values():
    print('ele=',i)
# ele= 162
# ele= 56

法二:序列项迭代列表对象
for x in sequence:
代码块*

把每个元素带入变量x,然后执行缩进的代码块

patients = [“Alice”,”Bob”,”Cathy”,”Eric”]
for patient_name in patients:
print(patients_name)

法三:枚举函数迭代序列对象
for index,x in enumerate(sequence)
代码块

index为索引位置,x为索引位置所对应元素,
enumerate() 函数将序列对象转换为索引序列,并返回序列对象的索引和元素

patients = [“Alice”,”Bob”,”Cathy”,”Eric”] For index,patients_name in
enumerate(patients): Print(index,patients_name)

else与循环结构的结合

while循环与else

a = 'i m a student'
i = 0
while i < len(a):
    print(a[i],end = '')
    i += 1
else:
    print('\n执行else部分的代码')
# i m a student
# 执行else部分的代码

循环嵌套

嵌套循环执行的总次数 = 外循环执行次数 * 内循环执行次数

嵌套循环:
1.外层循环条件为true时,执行外层循环结构中的循环体
2.外层循环体中包含了普通程序和内循环,当内循环的条件为true时,会执行此循环中的循环体,直至内层循环条件为false,跳出内层循环
3.如果此时外循环依旧为true,则返回2,继续执行外层循环,直到外层循环条件为false
4.当内层循环为false以及外层循环为false时,整个嵌套循环结束

while和for嵌套

i = 0
while i < 10:
    for j in range(10):
        print('i = ',i,' j=',j)
    i += 1
#10 *10 = 100次

if和for嵌套

i = 0
if i < 10:
    for j in range(5):
        print('i=',i,'j=',j)

# i= 0 j= 0
# i= 0 j= 1
# i= 0 j= 2
# i= 0 j= 3
# i= 0 j= 4

for表达式循环

[表达式 for 迭代变量 in 可迭代对象[if 条件表达式]]
[if 条件表达式]可以省略
等价于
for 迭代变量 in 可迭代对象
…表达式

a_range = range(10)
#对a_range执行for表达式
a_list = [x * x for x in a_range]
#a_list集合包含10个元素
print(a_list)
#[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

加入条件

a_range = range(10)
b_list = [x * x for x in a_range if x % 2 == 0]
#a_list集合包含5个元素
print(b_list)
#[0, 4, 16, 36, 64]

使用多个循环

#x遍历range(5),迭代5次,y遍历range(4),迭代4次,一共迭代20次
#相当于下面的循环
dd_list = []
for x in range(5):
    for y in range(4):
        dd_list.append((x,y))
print(dd_list)

程序要将两个列表中的数值按"能否整除”的关系配对在一起。比如src_a列表中包含30,src_b列表中包含5,其中30可以整除5,那么就将30和5配对在一起。

src_a = [30,12,66,34,39,78,36,57,121]
src_b = [3,5,7,11]
#只要y能整除x,就将它们配对在一起
result = [(x,y)for x in src_b for y in src_a if y % x == 0]
print(result)

break/contiune

break

break:提前退出循环(仅针对所在循环体)
for循环与else一起使用时,使用break时,不会执行else部分的代码
同时跳出内循环和外循环可以借助bool变量对其进行赋值

1.break与if

a = 'i m a student'
for i in a:
    if i == ' ':
        break
    print(i,end = '')

2.for…else与break

a = 'i m a student'
for i in a:
    if i == ' ':
        break
    print(i,end = '')
else:
    print('执行到else部分')

3.嵌套循环结构

a = 'i m a student'
for i in range(3):
    for j in a:
        if j == ' ':
            break
        print(j,end = '')
    print('\n跳出内循环')

4.跳出内外循环:借用bool变量,对其进行赋值

a = 'i m a student'
#提前定义一个bool变量,并为其赋初值
flag= False
for i in range(3):
    for j in a:
        if j == ' ':
            #在break前,修改flag的值
            flag = True
            break
        print(j,end = ' ')
    print('\n跳出内循环')
    #在外层循环体中再次使用break
    if flag == True:
        print('跳出外层循环')
        break

contioune

Contioune:跳出当前循环,直接开始下一次循环
代码有问题时,程序进入“死循环”,用Ctrl+C退出程序或者强制结束进程

1.与while、for连用

a = "i'm a student"
for i in a:
    if i == "'":
        print('\n')
        continue
    print(i,end = '')

# i

# m a student
#########################顺序结构################
c1 = 15
c2 = 20
if c1 > c2:
    print("c1小于c2")
else:
    print("c1小于c2")
#########多分支##########
if c1 > c2:
    print("c1 > c2")
elif c1 == c2:
    print("c1 = c2")
else :
    print("c1 < c2")
#####################循环结构##################
##########while循环#############
##########for-in循环###########
#########range()###############
patients = ["Alice","Bob","Cathy","Eric"]
c = len(patients)
print(c)
for index in range(len(patients)):
    print(index,patients[index])
#######迭代############
patients = ["Alice","Bob","Cathy","Eric"]
for patients_name in patients:
    print(patients_name)
#######枚举迭代#####
patients = ["Alice","Bob","Cathy","Eric"]
for index,patients_name in  enumerate(patients):
    print(index,patients_name)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值