| 【选择结构】 含义:根据条件判断来选择性的执行哪里代码 原理:先对条件进行判断,如果条件成立则执行对应的子语句, 如果条件不成立,则不执行对应的子语句 说明:对条件只判断一次,其输出结果也只有一个 单词:if 实现方式: 4种 {单分支、双分支、多分支、嵌套分支} print("%d是偶数"%num)
| 方式1、单分支(只有一条语句) 格式:if 条件: 子语句 含义:如果条件成立(其bool值为真),则执行子语句,如果条件不成立,则不执行 示例1:从键盘上输入一个数字,并判断其是不是正数? num = int(input("请输入一个整数:")) if num>0: print(“%d是正数”%num) 示例2:从键盘上输入一个整数,并判断其是不是偶数? num = int(input("请输入一个整数:")) if num%2==0: print(“%d是偶数”%num) | | 方式2、双分支(有2条语句) 单词:else(反之,是对以上条件取反,自带了条件,不需要单独写条件) 格式:if 条件: 子语句1 else: 子语句2 含义:如果条件成立,则执行子语句1,反之条件不成立,则执行子语句2 示例1:从键盘上输入一个数字,并判断其是正数还是负数? num=int(input(“请输入一个数字:”)) if num>0: print(“{}是正数”.format(num)) else: print(“%d是负数”%num) 示例2:从键盘上输入一个整数,并判断其是偶数还是奇数? num=int(input(“请输入一个整数:”)) if num%2==0: print(“{}是偶数”.format(num)) else: print(“%d是奇数”%num) 示例3:商品促销,满200减10 pay=float(input(“请输入商品的价格:”)) if pay>=200: pay=pay-10 # pay-=10 print(“亲,你需支付{}元”.format(pay)) else: print(“亲,你需支付{}元”.format(pay)) | | 方式3、多分支(有多个条件,) 单词:elif (else if),先对以上条件取反,在重新判断新条件,可以多次出现 格式:if 条件1: 子语句1 elif 条件2: 子语句2 elif 条件3: 子语句3 ... else: 子语句4 含义: 如果条件1成立,则执行语句1,反之如果条件2成立,则执行语句2 反之如果条件3成立,则执行语句3, 最后以上所有条件都不成立,则执行语句4 示例1:商品促销,满200减10,满500减30,满1000减100 pay=float(input(“请输入商品的价格:”)) if 0 print(“亲需支付总价为%f”%pay) elif 200<=pay<500: pay-=10 print(“亲需支付总价为%f”%pay) elif 500<=pay<1000: pay=pay-30 print(“亲需支付总价为%f”%pay) elif pay>=1000: pay=pay-100 print(“亲需支付总价为%f”%pay) else: #小于0的情况 print(“亲,你输入有误”) 示例2:从键盘上输入2个整数,求最大值 num1=int(input(“请输入第一个整数:”)) num2=int(input(“请输入第二个整数:”)) if num1>num2: print(“{}最大”.format(num1)) elif num1 print(“{}最大”.format(num2)) else: print(“2个数一样大”) 示例3:从键盘输入考试分数并判定成绩级别: 0到60,判定为不及格 60到70,判定为及格 70到80,判定为良好 80到90,判定为优秀 90到100,判定为牛逼 其他则提示:“输入有误” score=int(input(“请输入学生的考试分数”)) if scroe>=0 and score<60: print(“不及格”) elif 60<=socre<70: print(“及格”) … else: print(“输入有误”) | | 方式4、嵌套分支 思想:在一个条件语句中嵌套另外n个条件 示例1:从键盘上输入3个整数,求最大值 (先对2个数进行判断,然后将较大数进一步与第三个数判断) num1=int(input(“请输入第一个整数”)) num2=int(input(“请输入第二个整数”)) num3=int(input(“请输入第三个整数”)) if num1>num2: #num1大,进一步与num3比较 If num1>num3: #num1最大 Elif num1 #num3最大 Else: #num1与num3都是最大值 elif num1 #num2大,进一步与num3比较 If num2>num3: #num2最大 Elif num2 #num3最大 Else: #num2与num3都是最大值 Else: #num1=num2 If num2>num3: #num2和num都是最大的 Elif num2 #num3最大 Else: #num1、num2与num3相等 示例2:登录,首先从键盘上输入用户名,并对其判断 如果用户名正确,则进一步从键盘上输入密码并判断密码 如果密码也正确,则输出“登录成功” 如果密码错误,则输出提示语“密码错误,请重新输入:” 如果用户名一开始就错误,输出提示语“用户名错误,请重新输入:” 参考代码: username=input(“请输入用户名”) if username==”admin”: passwd=input(“请输入密码:”) If passwd==”123”: print(“登录成功”) else: print(“密码错误,请重新输入”) else: print(“用户名错误,请重新输入”) | 【顺序结构】 含义:代码的编写顺序以及执行顺序都是要遵守从上往下、从左往右的顺序 示例1: a=10 if a>=10: print(a) print(a+10) #结果:10 20 示例2: a=10 if a>10: print(a) print(a+10) #结果: 20 【循环结构】 含义:重复做一件相同(相似)的事情(步骤、动作是一样,但数据可以不一样) 原理:循环对条件进行判断,条件每满足一次(成立一次),则执行对应的语句一次,一直到条件不满足时才结束循环。 说明:对条件多次判断,其输出结果也有多个 实现方式: 2种
| 方式1:while 分类: A、死循环(不限次数) B、指定次数循环,通过条件设置次数 分类1:死循环 特点:条件永远满足,代码会一直执行,需手动结束 格式:while 条件: 循环语句(循环体) 写法: while True : while 2>1: while 123: 示例: while True: print("这是si循环,根本停不下来~") 分类2:指定次数循环 特点:根据条件满足的次数来控制循环的次数 组成:分三步 1)借助变量设置初始值(比如:最小值) 2)设置变量的满足条件(比如:最大值) 3)设置变量每次循环变化值(比如:步长) 格式: 变量=初始值 while 变量满足的条件: 循环语句(循环体) 变量的变化值
| 示例1: i=1 while i<2: print("我执行一次") i=i+1 | 示 例2: i=1 while i<=2: print("我执行二次") i=i+1 | | 用法1:指定次数循环 案 例1:输出5次:"好好学习,天天向上" i=1 while i<=5: print(“好好学习,天天向上”) i+=1 for i in range(5): print(“好好学习,天天向上”) 案 例2:分别换行输出数字0~9 i=0 where i<=9: print(i) i=1+i for i in range(10): print(i) 用法2:while循环中嵌套条件语句 案 例3:输出数字1~50之间的偶数 i=1 while i<=50: if i%2==0: print(i) i+=1 for i in range(1,51): if i%2==0: print(i) 案 例4:分别输出数字1~100之间的偶数和奇数 i=1 while i<=100: if i%2==0: print(“{}是偶数”.format(i)) else: print(“{}是奇数”.format(i)) i+=1 for i in range(1,101): if i%2==0: print(“{}是偶数”.format(i)) else: print(“{}是奇数”.format(i)) 用法3:while循环中进行运算 案 例5:求数字1~100之间所有整数的之和 1+2+4+5+6+…+100 i=1 sum=0 while i<=100: sum=sum+i i+=1 print(sum) sum=0 for i in range(1,101): sum=sum+i print(sum) 1-2-3-4-5-6-…-100 i=1 sum=2 while i<=100: sum=sum-i i+=1 print(sum) 案 例6:求数字1~100之间所有整数的之乘积 1*2*3*4*5*6*…*100 i=1 sum=1 while i<=100: sum=sum*i i+=1 print(sum) 1/2/3/4/5/6/…/100 用法4:while循环中嵌套条件语句并进行运算 案 例7:求数字1~50之间偶数之和 i=1 sum=0 while i<=50: if i%2==0: sum=sum+i i+=1 print(sum) sum=0 for i in range(1,51): if i%2==0: sum=sum+i print(sum) 案 例8:求数字1~100之间偶数之和以及奇数之和 i=1 sum1=sum2=0 while i<=100: if i%2==0: sum1=sum1+i else: sum2=sum2+i i+=1 print(sum1,sum2) 用法5:while循环中嵌套while循环 案 例9:九九乘法表 1x1=1 1x2=2 2x2=4 1x3=3 2x3=6 3x3=9 j * i = i*j … 1x9=9 2x9=19 …. 外层循环控制输出的行数(9行) 内层循环输出每一行的数据(数据有规律) i=1 while i<=9: j=1 while j<=i # 输出表达式 print(“{0}x{1}={2}”.format( j , i , j*i),end=” ”) j+=1 print() #换行 i+=1
| i=1 while i<10: j=1 while j<=i: #j<=i 这是找规律得来的 res = "%d*%d=%d"%(i , j , i*j) #乘法表达式 print(res , end=” ”) #内层循环的输出,不换行 j+=1 print("") #外层循环的输出:换行 i+=1 |
用法6:借助break语句来中止(结束)循环 break是一个独立语句,占一行 案 例10:输出数字1~9,当输出5时结束循环 1 2 3 4 i=1 While i<=9 if i==5: break print(i) i+=1 用法7:借助continue语句跳过当前的循环,继续下一轮循环 continue是一个独立语句,占一行 案 例12:输出数字1~9,当输出5时跳过循环继续下一个循环 1 2 3 4 6 7 8 9 i=1 While i<=9 if i==5: continue else: print(i) i+=1
| 案 例13:循环输入密码,输对了就结束但只有三次机会 i=1 while i<=3: passwd=input("请输入密码:") if passwd==123: print("正常开机") break i+=1 | 案 例14:输入账号和密码登录,密码只有三次机会 while True: name=input('请输入你用户名:') if name=='www': i=1 while i<=3: password=input('请输入密码:') if password=='123': print('登录成功') break else: print("密码错误") i+=1 break else: print('用户名错误,请重新输入:') | | | | | | 方式2:for in 超级重点 格式:for 变量名 in 对象: 循环体 含义:遍历对象中的每一个元素(数据), 原理:让变量按顺序依次去访问对象中的每个元素(数据), 每访问到一个元素(数据),执行循环体一次, 直到没有元素(数据)被访问了才结束遍历, 所以对象中有几个元素(数据),循环体就执行几次~ 说明1:变量名,是我们人为设定,根据需求,数量不限 说明2:访问,是让变量去访问,说白了就是赋值,依次访问就是依次赋值 说明3:对象,一般是列表、字典或者字符串等 特点:for遍历(循环)实现的一般都是指定次数的循环,次数取决于对象的数据个数 range() 用于给for指定次数 含义:这是python内建函数 作用:生产一个序列数字对象,该序列对象中数据为数字 格式:range(最小数字,最大数字,步长) 说明1:数字都是整数 说明2:最小数字的默认值为0,包含在内 说明3:最大数字不包含在内 说明4:默认步长为1 示例1: for i in range(0,10) print(i) #输出结果为:0 1 2 3 4 5 6 7 8 9 示例2:range(5) #0 1 2 3 4 示例3:range(1,9,2) #1 3 5 7 案例1: for i in 'python': print(i,end=”+”) #结果:换行输出p y t h o n 案例2: for i in 'Python': print("我想一夜暴富") #结果:输出6次:我想一夜暴富 案例3: goods = ['手机', '电脑', '平板'] for i in goods: print(i) #结果:手机 电脑 平板 案例4: goods = ['手机', '电脑', '平板'] for i in goods: print("我想买%s"%i) #结果: 我想买手机 我想买电脑 我想买平板 案例5:多变量并行访问多个对象,借助zip连接多个对象 user=[‘张三丰’ , ’张翠山’ , ’张无忌’] num=[100,50,91] for name , age in zip(user , num): Print(“{0}的年龄为{1}岁”.format(name , age) ) 案例6:遍历字典对象 data={“username”:”admin” , “password”:”admin123”} for key in data.keys(): print(key) for value in data.values(): print(value) for key , value in data.items(): print(key , value) 我想买电 我想 我想买手 我想买 我想买平板 | | 练习1:九九乘法表 (range(1,10)) 2个for可以实现
| for i in range(1,10): for j in range(1 , i+1): res="{0}*{1}={2}".format( j , i, j*i) print(res,end=" ") print() |
练习2:冒泡排序 2个for循环+条件判断
| arr=[1,5,8,2,4,9,6] #来自需求 for i in range( 0 , len(arr) ): for j in range(0 , len(arr)-i-1): if arr[j] > arr[j+1] : #> 是升序,< 是降序 arr[j] , arr[j+1] = arr[j+1], arr[j] print(arr) |
练习3:组合 3个for循环+if条件 1元、5元、10元组合为20元,有多少种组法?
| count=0 for a in range(0,21): for b in range(0,5): for c in range(0,3): if a*1+b*5+c*10==20: count=count+1 print(count) |
| |