条件控制语句
条件判断
条件判断语句(if语句)
- 执行的流程:
- if 语句在执行时,会先对条件表达式进行求值判断,
- 如果为True,则执行 if 后的语句
- 如果为False,则不执行
- 语法:
if a == 1 : # a == 1 --> 条件表达式 print('a等于1') # --> 代码块
- 代码块中保存着一组代码,同一个代码块中的代码,要么都执行要么都不执行
- 代码块以缩进开始,直到代码恢复到之前的缩进级别时结束
- 代码块就是一种为代码分组的机制
input() 函数
- 该函数用来获取用户的输入
- input() 调用后,程序会立即暂停,等待用户输入
- 用户输入完内容以后,点击回车程序才会继续向下执行
- 用户输入完成以后,其所输入的的内容会以返回值得形式返回
if-else语句
- 语法:
if a == 1 : # a == 1 --> 条件表达式 print('a等于1') # --> 代码块 else : print('a不等于1') # --> 代码块
- 执行流程:
- if-else 语句在执行时,先对if后的条件表达式进行求值判断
- 如果为True,则执行if后的代码块
- 如果为False,则执行 else 后的代码块
if-elif-else 语句
- 语法:
value = 2000 if value >= 30000: print('有钱任性') elif value >= 5000: print('工资还说的过去') else: print('能养活自己了')
- 执行流程:
- if-elif-else 语句在执行时,会自上向下依次对条件表达式进行求值判断,
- 如果表达式的结果为True,则执行当前代码块,然后语句结束
- 如果表达式的结果为False,则继续向下判断,直到找到True为止
- 如果所有的表达式都是False,则执行else后的代码块
- 总结: if-elif-else 中只会有一个代码块会执行
循环控制
while语句
循环语句
- 循环语句可以使指定的代码块重复指定的次数.循环语句分成两种,while 循环 和 for 循环
- 语法:
while a == 1 : # a == 1 --> 条件表达式 print('a等于1') # --> 代码块 else: print('a不等于1') # --> 代码块
break和continue
- break 可以用来立即退出循环语句,包括 else 语句
- continue 用来跳过当次循环
for循环
for循环遍历
- 语法:
for letter in 'Python': # letter --> 变量, 'Python' --> 序列(遍历的规则) print '当前字母 :', letter # --> 代码块
注意:
- for 循环的代码块会执行多次,序列中有几个元素就会执行几次。每执行一次就会将序列中的一个元素赋值给变量,所以我们可以通过变量来获取列表中的元素。
- print()自带换行 print(self, *args, sep=’ ‘, end=’\n’, file=None),默认end=’\n’转义字符
range(start, stop[, step])
参数说明
- start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);
- stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
- step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)
- 实例
>>>range(10) # 从 0 开始到 10 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> range(1, 11) # 从 1 开始到 11 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] >>> range(0, 30, 5) # 步长为 5 [0, 5, 10, 15, 20, 25] >>> range(0, 10, 3) # 步长为 3 [0, 3, 6, 9] >>> range(0, -10, -1) # 负数 [0, -1, -2, -3, -4, -5, -6, -7, -8, -9] >>> range(0) [] >>> range(1, 0) []
循环嵌套
- Python 语言允许在一个循环体里面嵌入另一个循环。
while 表达式: while 表达式: 代码块 代码块 for 变量 in 循环规则: for 变量 in 循环规则: 代码块 代码块 ```
作业
-
求1000以内所有的水仙花数
for num in range(100, 1000): a = num % 10 # 个位 b = num // 10 % 10 # 十位 c = num // 100 # 百位 if num == pow(a, 3) + pow(b, 3) + pow(c, 3): print(num) # 结果 153 370 371 407
拓展: pow() 方法返回 x y x^y xy(x 的 y 次方) 的值。
-
获取用户输入的任意数,判断其是否是质数?
num = int(input('请输入一个任意数')) if num > 1: for i in range(2, num): if (num % i) == 0: print(num, "不是质数") print('{0}*{1}={2}'.format(i, num // i, num)) break else: print(num, "是质数") else: print(num, "不是质数")
-
猜拳游戏:
- 出拳 玩家:手动输入 电脑:随机输入
- 判断输赢: 玩家获胜 电脑获胜 平局
import random # 导入 random(随机数) 模块 go = 'y' while go == 'y': go = 'n' num = int(input('请出拳(0:石头,1:剪刀,2:布)')) if 0 <= num <= 2: robot = random.randint(0, 2) # 生成 0 ~ 2 之间的随机数 print('玩家出的是:{0}'. format('石头' if num == 0 else ('剪刀' if num == 1 else '布'))) print('电脑出的是:{0}'. format('石头' if robot == 0 else ('剪刀' if robot == 1 else '布'))) if num == robot: print('平局') elif num == 0: if robot == 1: print('玩家获胜') else: print('电脑获胜') elif num == 1: if robot == 2: print('玩家获胜') else: print('电脑获胜') elif num == 2: if robot == 0: print('玩家获胜') else: print('电脑获胜') go = input('是否继续(y/n)') else: go = input('请输入0、1、2进行游戏,是否继续(y/n)')
-
9*9算法表
- 9*9算法表
i = 1 while i < 10: j = 1 while j - i <= 0: print('%s*%s=%2s ' % (j, i, i * j), end=' ') j += 1 i += 1 print()