生活中的判断几乎是无所不在的,我们每天都在做各种各样的选择,如果这样?如果那样?……
考试成绩对人生的影响,不同的考试成绩对应着的结果,也就是不用的分支
正是因为有了判断,才使得程序世界丰富多彩,充满变化!
判断语句 又被称为 “分支语句”,正是因为有了判断,才让程序有了很多的分支
标准if条件语句的语法
只要表达式数字为 非零值 即为 True
空字符串、空列表的值均为 False
# 代码2:为0的数字都为False,True才执行; # 代码3:空格是空字符串,为True,会打印; # 代码4:[False]为列表,列表中元素是False,因为列表存在,为真会打印; # 代码5:None为假,取反为真;方法一:编写剪刀石头布小游戏
# 定义列表all_choices,存储出拳的每个选择 # random模块的choice方法,可以从变量中随机选出一个元素,随机出来的元素为电脑的出拳 # 使用input()函数,获取用户的出拳选择 # 使用函数print()打印出电脑和玩家的出拳选择 # 当玩家出拳为【石头】时,电脑的每一种出拳选择都要和【石头】进行比较,打印结果 # 当玩家出拳为【剪刀】时,电脑的每一种出拳选择都要和【剪刀】进行比较,打印结果 # 当玩家出拳为【布】时,电脑的每一种出拳选择都要和【布】进行比较,打印结果 # 定义列表all_choices,存储出拳的每个选择 # 定义列表win_list, 将玩家赢电脑的选择,提前保存起来 # 每个子列表中,玩家为第一个元素,电脑为第二个元素 # random模块的choice方法,可以从变量中随机选出一个元素 # 随机出来的元素为电脑的出拳 # 使用input()函数,获取用户的出拳选择 # 使用函数print()打印出电脑和玩家的出拳选择 # 如果玩家和电脑的出拳相同,则平局 # 如果[玩家,电脑]的列表,在win_list中,则可判断玩家赢,因为在win_list中定义了玩家赢得各种可能性 # 玩家不是赢,那么就是输了,玩家所有赢得可能性已经在win_list定义了在程序开发中,一共有三种流程方式:
减少重复性代码,提高代码效率
while
循环最常用的应用场景就是 让执行的代码 按照 指定的次数 重复 执行
while
语句以及缩进部分是一个 完整的代码块
# 1. 定义重复次数计数器
注意:循环结束后,之前定义的计数器条件的数值是依旧存在的
# 0. 定义最终结果的变量
# 1. 定义一个整数的变量记录循环的次数
# 每一次循环,都让 sum100 这个变量和 counter 这个计数器相加
# 处理计数器,控制循环次数
练习 1:完善石头剪刀布的游戏
实现循环结构,要求游戏三局两胜
【优化】实现循环结构,要求游戏三局两胜 # 使用input()函数,获取用户的出拳选择 # 使用函数print()打印出电脑和玩家的出拳选择 # 如果玩家和电脑的出拳相同,则平局 # 如果[玩家,电脑]的列表,在win_list中,则可判断玩家赢,因为在win_list中定义了玩家赢得各种可能性 # 玩家不是赢,那么就是输了,玩家所有赢得可能性已经在win_list定义了
break
某一条件满足时,退出循环,不再执行后续重复的代码
continue
某一条件满足时,跳过当前循环,不执行 continue 后续重复的代码
break
退出循环
break
只针对当前所在循环有效
else: # 如果猜大了,打印,并继续执行while循环
我们都有在超市购物的经历,将一件一件的商品放进购物车:
我们如果把购物车比做一个容器,例如学习过的列表,元组,字典等数据结构,那么里面的商品就可以看成是一个个元素,而且购物车中的元素是有固定数量的。
当我们去超时收银台扫码结账的时候,店员会将购物车中的商品一件一件的取出,然后扫描二维码。注意这里的过程是拿一件,扫一件。
又因为购物车中商品数量是有限的,所以扫描商品的次数也是有限次。比如,购物车中有5件商品,那么最后就会扫描 5 次。
从上述代码可以看出,购物车cart中有5件商品,所以for中的print逻辑执行了5次。for一般用于指定次数的循环逻辑中,一般情况下,循环次数未知采用while循环,循环次数已知,采用for循环。在for关键字后面跟的这个item变量,变量名是可以根据变量命名规则更改的。
# for 循环做价格的累加
我们如果把店员将购物车商品一件一件取出进行扫码的过程,比喻成将某个容器中的元素一个个取出然后进行后续操作,这个过程就叫做遍历。、
遍历不仅限于列表,还适用于元组,字典和字符串类型。
概念:一个实现了__iter__方法的对象是可迭代对象,一个实现next方法的对象则是迭代器。
人话:现阶段我们学过的可迭代对象有 字符串,列表,元组,集合,字典,range(),并且能被 for 循环的都是可迭代对象。
跳出当次循环,记住执行下次循环 |
循环正常结束(非 break 退出),执行 else 逻辑 |
range 函数是一个内建函数,它的返回值是一个半闭半开范围内的数字。for 循环常与range函数一起使用,range 函数为循环提供条件。
因为 range 函数的使用和切片比较类似,所以同样具有切片的使用特性:
可以把 range 函数当成购物车,购物车中的商品是一个个范围内的数字,要想拿出里面的数字,就得遍历,所以 range 可以和 for 连用,可以控制循环次数。
这里的变量 i 只是为了语法,在案例中没有实际意义,不写变量在语法层面会报错,这里的 range 只为控制循环次数。
# 打印下标为偶数的元素
它是一个非常有用、简单、而且灵活的工具,可以用来动态地创建列表
这个语句的核心是 for 循环,它遍历可迭代对象的所有条目
expr 表达式应用于序列的每个成员,最后的结果值是该表达式产生的列表。也就类似于我们从购物车中拿出1件商品,接下来要做的事情。
for 循环方式:语法相对复杂,但是好理解
列表解析式相对于for循环,只是变了一种结构,核心还是for循环,所以我们只需要关心语法即可。
fib = [0,1] # 定义列表,指定斐波那契数列的初始两个值
版本二:编写可以指定长度的斐波那契数列程序
fib = [0,1] # 定义列表,指定斐波那契数列的初始两个值
# for循环执行n-2次,for循环执行多少次,列表fib会新增多少个元素
# 因为列表fib本身有两个初始值,所以要产生n-2个数字
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。