)
# python中的循环语句 from operator import truediv from ctypes.macholib.dyld import DEFAULT_LIBRARY_FALLBACK from logging import error # if条件判断语句 --- 单分支 # if的核心在于布尔值 True/False 计算机非常死板它必须得到一个是或者否 # if条件判断语句判断成功之后执行if设置的语句不成功执行else语句 # 举个例子 # 输入公交卡当前的余额只要超过2元就可以上车如果有空位就可以坐下 # money int(input(请输入您的卡内余额)) # if money 2: # print(你可以上车) # nasa int(input(请输入当前车内空余座位数:)) # if nasa0: # print(存在空位请选择对应的座位坐下) # else: # print(座位已满请站着) # else: # print(您的余额不足请先充值后上车) # 多重分支结构 # 当一个问题不只是对或错而是有多种可能时我们就会用到elseelse if # if判断语句 --- 多分支 # 举个栗子 # 充值VIP # money 400 # if money 400: # print(VIP4) # elif money 300: # print(VIP3) # elif money 200: # print(VIP2) # elif money 100: # print(VIP1) # elif money 0 and money 100: # print(普通用户) # eg:判断优先从大的数值开始如果先输入小的值会直接输出最小值的结果从而失去判断的意义 # 练习场景只能电影院自动售票系统 # 任务目标 # 请你写一段程序根据顾客的年龄和持有的优惠券类型算出他们最终支付的票价 # 规则手册 # 1.基础票价100元 # 2.年龄优惠 # 2.1 儿童 小于12岁半价 # 2.2 老人 大于等于65岁折扣价6折 # 2.3 成人 12-64岁原价 # 3.特殊身份id/优惠券仅限成人 # 如果是学生在原价基础上在减20元 # 4.超级黑卡 # 如果持有黑卡无论年龄大小身份id一律10元 # ------ 1.自定义输入区 ------ # base_price 100 # 基础票价可以随意修改 # age 20 # 年龄 # is_student True # 是否是学生 # has_black_cord False # 是否持有黑卡 # ------ 2.逻辑计算区 ------ # if has_black_cord: # # 黑卡拥有绝对优先权不受基础价格影响 # final_price 10 # print(f检测到尊贵黑卡:无论原价多少仅收{final_price}元) # elif age 12: # # 儿童 5折 # final_price base_price * 0.5 # print(f儿童优惠5折:{final_price}元) # elif age 65: # # 老人 6折 # final_price base_price * 0.6 # print(f老人优惠6折:{final_price}元) # else: # # 成人逻辑 # if is_student: # # 学生在基础价格上减20元 # final_price base_price - 20 # print(f学生优惠立减20:{final_price}元) # else: # # 普通人原价 # final_price base_price # print(f标准成人原价无折扣:{final_price}元) # ------ 3.输出结果 ------ # print(- * 30) # print(f原价:{base_price}元|最终结算金额:{final_price}) # base_price 100 # a int(input(您是否持有黑卡)) # if a 是: # print(10) # else: # age int(input(请输入您的年龄)) # if age 65: # print(base_price * 0.6) # elif age 12 and age 65: # b int(input(您是否是学生)) # if b 是: # print(base_price - 20) # else: # print(base_price) # elif age 12: # print(base_price * 0.5) # 三目运算只适合单分支 # name input(请输入您所在的省份以显示省会城市) # if name 广东 # print(广州) # else: # print(请重新输入) # 转为三目运算 # name input(请输入您所在的省份以显示省会城市) # print(广州) if name 广东 else print(请重新输入) #__contains__判断字典中是否包含某个key # dict1 {name: zhangsan, age: 18} # if dict1.__contains__ (sex) is True: # print(存在sex这个字段) # else: # dict1[sex] 男 # print(dict1) # dict1 {name: zhangsan, age: 18} # print(存在sex这个字段) if dict1.__contains__(sex) is True else dict1[sex] 男 # print(dict1) # 语句中嵌套if语句实战 # 登录功能实战练习: # 通过输入函数输入用户名先判断用户名是否正确 # 用户名正确则进行密码的判断 # 如果用户名错误则提示:用户错误请重新输入。 # 密码错误则提示:您输入的密码有误请重新输入。 # 密码输入正确则登录成功。 # username admin # password 123456 # a input(请输入您的用户名) # if a ! username: # print(用户错误请重新输入) # else: # print(用户名正确) # b input(请输入您的密码) # if b 123456: # print(登录成功) # else: # print(您输入的密码有误请重新输入) # while循环语句 # 1、核心逻辑:只要...就... # while循环的逻辑非常简单:只要条件为True代码块就会一遍又一遍的执行一旦条件为False循环立即停止 # 基本语法 # while条件: # # 代码块(只要条件成立就会反复执行这里的代码) # # ⚠必须要有改变条件不然条件不变永远都会满足条件就会形成死循环 # 举个例子 # 我们来写一一个程序模拟手机电量从80%冲到100%的过程。 # battery 80 # 当前电量 # # while battery 100: # # battery battery 5 # battery 5 # print(f正在充电...当前电量{battery}%) # print(电量已满请拔下充电器。) # 关键点 # 初始值batyery80 # 循环条件batte100 # 迭代更新battery 5 (如果没有这一行电量永远都是80程序会死循环) # 涨工资举例子 # gongzi 3000 # n 0 # while gongzi 5000: # print(需要涨500元工资) # gongzi 500 # 条件改变语句 # n 1 # print(这是第%d循环%n,我现在的工资是%d% gongzi) # 登录功能实战练习 # 1.通过输入函数输入用户名先判断用户名是否正确用户正确则进行密码判断 # 2.如果用户名错误则提示账号输入有误请重新输入 # 3.如果密码错误则提示密码输入有误请重新输入 # ps:共有三次输入密码的机会三次密码有误账号锁定。 # username admin # password 123456 # a input(请输入您的用户名:) # if a ! username: # print(用户错误请重新输入) # else: # print(用户名正确) # count 0 # while count 3: # b input(请输入您的密码:) # if b password: # print(登录成功) # else: # count count 1 # print(f密码错误已错{count}次) # if count 3: # print(三次密码错误账号锁定) # dict1 {usename: admin, password: 123456} # username input(请输入你的账号:) # if username dict1.get(usename): # count 3 # while count 0: # passwordinput(请输入您的密码:) # if password dictl.get(password): # print(登录成功!) # else: # count - 1 # if count 3: # print(f密码输入错误还有{count}次机会请重新输入!) # else: # print(密码输入错误X次数过多账号已被锁定) # else: # print(你输入的账号有误请重新输入!) # for循环语句 # 在python中for循环语句核心逻辑就是遍历 # for循环基本格式 # for 变量 in 序列: # 执行的代码块 # 它是怎么运行的 底层逻辑 # 假设有一个列表fruits [苹果,香蕉,橙子] # 1.第一轮for 伸手抓向第一个元素 苹果把它赋值给变量执行代码 # 2.第二轮for 自动移向下一个位置抓起 香蕉执行代码 # 3.第三轮抓起 橙子 执行代码 # 4.发现后面没有东西了循环自然终止 # for循环和 range()函数结合使用 # range()函数在设定范围返回一组数据 # 用法range(开始值结束值步进值) # 开始值代表从哪个数字开始下标从0开始缺省0 # 结束值代表到哪个数字结束不可缺省结束值不取 # 步进值(步长)每个要改变多少的量缺省为1 # range()在python2和python3中的区别 面试有问过 # python3range()函数返回的是一个可迭代的对象在打印的时候不会打印列表 # python2range()函数返回是一个列表 # range(5)生成0,1,2,3,4 (开始值不填从0开始结束值不取) # range(1,6):生产1,2,3,4,5 (指定起点为1) # range(1,10,2):生产1,3,5,7,9 () # 举个栗子 # list1 (range(1,10)) # print(list(list1)) # [1, 2, 3, 4, 5, 6, 7, 8, 9] # list2 (range(10)) # print(list(list2)) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] # list3 (range(10,1)) # 开始值大于结束值则无结果 # print(list(list3)) #[] # for i in range(1,10): # print(i,end ) # 使用range()函数求出1-100的和 # 第一种 # sum 0 # 先定义一个初始值0 # for i in range(101): # i会拿到0-100的值 # sum i # 每拿到一个值会和之前的数相加进行循环 # print(sum) # 打印出最终结果 # 第二种使用一行代码求出1-100的和面试有问 # print(sum(range(101))) # for nasa in range(10): # print(nasa, end ) # 0123456789 # # for i in range(3, 10, 2): # print(i, end ) # 3 5 7 9 # for i in range(10, 1, -1): # print(i, end ) # 10 98 76 5 4 3 2 # 1.求出1-100的奇数之和 # Sum 0 # for i in range(1, 101, 2): # sum i # print(sum) # 2500 # 2.求出1-100的偶数之和 # sum 0 # for i in range(2, 101, 2): # Sum i # print(sum) # 2550 # for循环的遍历作用可以用在字典、列表、字符串、元组、集合 # 1.遍历字符串 # str1 python # for i in str1: # print(i,end ) # p y t h o n # 2.遍历列表 # str1 [1,2,3,4,5, 6] # for i in str1: # print(i,end) # 1 2 3 4 5 6 # 3。遍历元组 # str1 (1, 2, 3, 4, 5, 6) # for i in str1: # print(i, end ) # 1 2 3 4 5 6 # 4.遍历字典 # dict1 {name:zhangsan,age:18} # for i in dict1: # print(i,dict1[i],end ) # name zhangsan age 18 # 5.遍历集合 # set1 {1, 2, 3, 4, 5} # for i in set1: # print(i,end ) # 1 2 3 4 5 # 6.整数不能遍历 # int1 12345 # for i in int1: # print(i,end ) # TypeError: int object is not iterable # 遍历三种常见的方法 # A:基础遍历如果要对列表里的元素进行操作首先要想到用遍历 # names [孔乙己,祥林嫂,闰土] # for i in names: # print(f你好{i}!) # # 你好孔乙己! # # 你好祥林嫂! # # 你好闰土! # B指定次数 # 模仿手机报警提示 3 次 # for i in range(3): # print(⚠警告检测到非法登录) # C带索引遍历高阶用法 # items [铅笔,尺子,橡皮] # len()函数获取列表的长度列表元素的个数 # for i in range(len(items)): # print(f第{i1}件商品是{items[i]}) # 第1件商品是铅笔 # 第2件商品是尺子 # 第3件商品是橡皮 # 嵌套for循环 # 想象你在排座位有3排每排有4个座位你需要打印所有的坐标 # for i in range(1,4): # 外层for循环控制 行 第几行 # for a in range(1,5): # 内层for循环控制 列 第几列 # print(f你当前的位置是在{i}排{a}座) # 理解要点外层循环转1圈内存循环要转完完整的一轮 # 用法:continue语句用来告诉Python跳过当前循环的剩余语句然后继续进行下一轮循环。 # list [1,2,3,4,5,6,7,8,9] # for i in list: # if i 6: # continue # print (i) # Continue语句 # 作用:Continue跳过当前这一轮直接开始下一轮。不会终止整个循环只是缩短了这一圈的路径 # 的潜台词:这个不算看下一个 # 适用场景:排除不合格的数据过滤特定项 # for i in range(10): # if i 6: # 如果 i6 # continue # 就跳过这个循环 # print(i,end1) # 012345789 # 举个例子 # 假设你要给学生发奖金但是要跳过表现不及格的人。 # scores [80,55,90,40,75] # for i in scores: # if i 60: # continue # 如果不及格直接跳回循环开头看下一个分数不执行下面的print(continue后面的语句不执行) # print(f分数{i}合格发放奖金) # 输出结果中不会出现 55 和 40 相关信息 # Break语句:彻底终止 # 作用:break的作用是立即停止并退出整个循环一旦执行到它程序会直接跳出循环体去执行循环后面的代码 # 潜台词:达到目的了别干了收工回家! # 适用场景:找到目标了、发生错误、或者是达到某个上限 # 举个例子 # 假设你在100个箱子里找到钥匙找到了就没有必要再翻剩下的箱子 # for i in range(1,101): # print(正在检查第{i}箱子...) # if i 5: # print(找到了停止搜索) # break # 此时循环会彻底结束不会去检查第6个及以后的箱子break后面的代码不会执行 # print(准备开门) # 第一题ATM 机密码锁while if break # 场景模拟 ATM 机登录。 # 1、已知正确密码为 123456。 # 2、用户最多有 3 次机会输入。 # 3、如果输入正确显示“登录成功”并立即退出循环。 # 4、如果输入错误显示“密码错误还有 X 次机会”。 # 5、如果 3 次都输错显示“账号已被锁定”。 # password 123456 # count 3 # while count 0: # a input(您输入的密码是) # if a password: # print(登录成功) # break # else: # count - 1 # if count 0: # print(f密码错误还有{count}次机会) # else: # print(账号已被锁定) # 第二题逢 7 过for if continue # 场景聚会经典游戏“逢 7 过”。 # 遍历数字 1 到 50。 # 如果数字是 7 的倍数或者数字中包含 7例如 17, 27则打印“过”并跳过当前的数字打印。 # 其余数字正常打印 # for i in range(1,51): # if i % 7 0 or 7 in str(i): # print(过,end ) # continue # print(f当前的数字是{i}) # 第三题库存自动清点for if break continue # 场景仓库里有一批货物 items [10, 0, 25, -1, 30, 5]。 # 数字代表货物数量。 # 遍历这个列表 # 1、如果数量为 0说明缺货直接跳过continue处理下一个。 # 2、如果数量为 负数说明数据异常立即停止清点break并报警。 # 3、如果数据正常打印“当前库存X正在入库”。 # items [10, 0, 25, -1, 30, 5] # for i in items: # if i 0: # print(i,end ) # continue # if i 0: # print(f警告发现数据异常{i}停止清点) # break # print(f正常当前库存{i}正在入库) # 第四题猜字游戏️ # 设定目标预设一个秘密数字如 secret_number 7。 # 持续输入只要没猜对程序就一直要求用户输入使用 while True。 # 判断反馈 # 如果猜大了提示“太大了” # 如果猜小了提示“太小了” # 如果猜对了提示“真聪明”并立即停止游戏使用 break。 # secret_number 7 # while True: # a int(input(请输入数字)) # if a secret_number: # print(太大了) # elif a secret_number: # print(太小了) # else: # a secret_number # print(真聪明) # break # 第五题自定义票价团队折扣计算 # 场景某景点门票原价由用户自定义base_price。现在有一组游客的年龄列表 ages [10, 25, 18, 70, 30]。 # 请遍历这个年龄列表 # 1、儿童12岁免费不计入总金额打印 儿童免费。 # 2、老人65岁5 折。 # 3、成人其他原价。 # 特殊规则如果累计总票价超过了 200 元为了防止团队经费超支后续的游客将停止购票并打印“经费不足停止购票”。 # 最后输出最终总票价是多少。 # ages [10, 25, 18, 70, 30] # base_price int(input(请输入基础票价)) # 票价 # sum 0 # for i in ages: # if i 12: # print(儿童免费) # elif i 65: # sum sum base_price * 0.5 # # print(sum) # else: # sum sum base_price # # print(sum) # if sum 200: # print(经费不足停止购票) # else: # print(f最终票价是{sum}元) # base_price 100 # 自定义票价 # ages [10, 25, 18, 70, 30] # budget_limit 200 # total_sum 0 # # for age in ages: # if age 12: # print(f年龄{age}儿童免费) # continue # 免费不计入 total_sum,直接看下一个人 # elif age 65: # current_price base_price * 0.5 # print(f年龄{age}老人五折票价{current_price}元。) # else: # current_price base_price # print(f年龄{age}成人原价票价{current_price}元。) # # if total_sum current_price budget_limit: # print(f警告加入这张票后总计{total_sum current_price}元超过预算{budget_limit}元停止购票。) # break # # total_sum current_price # print(f最终结算的金额是{total_sum}元)