【黑马python】基础 4.Python 循环语句 while for range
笔记汇总目录
Python 循环语句
while循环的基础语法
while格式
-
注意:条件结果为布尔类型;冒号;代码块缩进
-
新的注意点:设置循环终止条件
-
代码示例
# 输出100次 n = 0 while n < 100: print(f"i = {n+1}") n += 1 """ 输出结果: i = 1 i = 2 i = 3 ... ... i = 99 i = 100 """
-
练习:求1-100的和
-
代码示例
# 求1-100的和 count = 0 n = 1 while n <= 100: count += n n += 1 print(f"1-100的和:{count}") # 1-100的和:5050
while循环案例:猜数字
-
不同思路
-
如果不用break,可以设置flag=True,并在结束时设置flag=False
-
-
代码示例
# 猜1-100的随机数 import random num = random.randint(1, 100) count = 0 while True: count += 1 guess = int(input("输入你猜的数字:")) if guess == num: print(f"恭喜你,第{count}次就猜对了!") break elif guess > num: print("太大了") else: print("太小了")
while循环的嵌套应用
-
while循环的注意点
-
空格缩进决定层级关系
-
一定要设置循环结束的条件
-
-
使用难点
- 层级越多,越复杂,细心+耐心
- 层级越多,越复杂,细心+耐心
-
代码示例
# while循环的嵌套 i = 1 while i <= 100: print(f"今天是第{i}天") j = 1 while j <= 10: print(f"送给小美的第{j}朵花") j += 1 i += 1 print("向小美表白") print(f"今天是第{i-1}天,表白成功啦") # 注意这里是i-1,否则上一步的i最后是大于100的
while循环案例:九九乘法表
-
print输出不换行
-
print语句:默认换行
-
输出不换行:加 end=' '
- 单引号里的空格:体现到 hello world 中间的空格上
- 单引号里不加空格:两条输出内容会连在一起:helloworld
print("hello", end=' ') # 单引号里的空格会体现到 hello world 中间的空格上 print("world") # hello world
-
-
制表符
\t
- 字符串中的特殊符号:
\t
- 效果等同于在键盘按下制表符 tab键
- 作用:多行字符串进行对齐
print("hello\tworld") print("google\tmap") # hello world # google map
- 字符串中的特殊符号:
-
案例分析
-
代码示例
# 九九乘法表 i = 1 while i <= 9: j = 1 while j <= i: print(f"{j} * {i} = {j * i}", end='\t') # 或者 print(f"{j} * {i} = {j * i}\t", end='') j += 1 print("") # print空内容,等效于输出一个换行 i += 1 """ 1 * 1 = 1 1 * 2 = 2 2 * 2 = 4 1 * 3 = 3 2 * 3 = 6 3 * 3 = 9 1 * 4 = 4 2 * 4 = 8 3 * 4 = 12 4 * 4 = 16 1 * 5 = 5 2 * 5 = 10 3 * 5 = 15 4 * 5 = 20 5 * 5 = 25 1 * 6 = 6 2 * 6 = 12 3 * 6 = 18 4 * 6 = 24 5 * 6 = 30 6 * 6 = 36 1 * 7 = 7 2 * 7 = 14 3 * 7 = 21 4 * 7 = 28 5 * 7 = 35 6 * 7 = 42 7 * 7 = 49 1 * 8 = 8 2 * 8 = 16 3 * 8 = 24 4 * 8 = 32 5 * 8 = 40 6 * 8 = 48 7 * 8 = 56 8 * 8 = 64 1 * 9 = 9 2 * 9 = 18 3 * 9 = 27 4 * 9 = 36 5 * 9 = 45 6 * 9 = 54 7 * 9 = 63 8 * 9 = 72 9 * 9 = 81 """
for循环的基础语法
-
格式注意点
-
几个要素:for i (临时变量) in 数据集(序列) (冒号)
-
for循环:无法定义循环条件(只能依次取出,并处理)
-
理论上讲,Python的for循环无法构建无限循环(被处理数据集不可能无限大)
-
-
代码示例
name = "itheima" for x in name: # 将name的内容:挨个取出,赋值给临时变量x print(x)
-
练习:数一数有几个a
-
代码示例
# 数一数有几个a name = "itheima is a brand of itcast" count = 0 for x in name: if x == 'a': count += 1 print(f"{name}中共含有:{count}个字母a") # itheima is a brand of itcast中共含有:4个字母a
range语句
-
序列类型
- 指 内容 可以一个个 依次取出 的一种类型 (例如:字符串、列表、元祖等)
- for循环本质上:遍历:序列类型
- range语句:可以获取一个简单的数字序列
-
range语句
-
格式:range(start, stop[, step])
-
start默认为0,step默认为1,stop不包含在结果中
-
-
range语句注意点
-
直接print(range()):
- 直接原样输出range(start, end), 而不是数字序列
-
不合理序列:不输出
-
不同的step
- step不能为0:会报错 (ValueError: range() arg 3 must not be zero)
- step不合理:不输出
-
-
代码示例
print(range(10)) # range(0, 10) for i in range(10): print(i, end=' ') # 0 1 2 3 4 5 6 7 8 9 print("") for i in range(5, 12): print(i, end=' ') # 5 6 7 8 9 10 11 print("") for i in range(10, 0, -2): # ValueError: range() arg 3 must not be zero print(i, end=' ') # 10 8 6 4 2
-
练习:有几个偶数
-
代码示例
# 有几个偶数 num = int(input("请输入数字范围:")) count = 0 for i in range(1, num): if i % 2 == 0: count += 1 print(f"1到{num}范围内,一共有:{count}个偶数")
for循环临时变量作用域
-
临时变量在for循环外
-
实际可以访问到,但是规定不建议:
- for结束后,中间加其他代码,临时变量依然可以访问到
-
优雅的访问方式:预先在for循环外定义变量存储它
-
-
代码示例
# 临时变量的作用域:不建议但实际能执行 # i = 0 # 建议在for循环之前,就定义好变量 for i in range (1, 10, 2): print(i,end=' ') # 1 3 5 7 9 print("") print(i) # 9
for循环的嵌套应用
-
for循环嵌套注意点:空格缩进确定层次关系
-
for循环和while循环:可以相互嵌套
-
代码示例
# for循环嵌套 i = 0 for i in range(1, 101): print(f"今天是第{i}天:") for j in range(1, 11): print(f"给小美的第{j}朵花") print(f"和小美表白的第{i}天") print(f"第{i}天,表白成功了")
for循环案例:九九乘法表
-
代码示例
# for循环:九九乘法表 for i in range(1, 10): for j in range(1, i+1): # 注意这里是 i + 1 print(f"{j} * {i} = {j * i}", end='\t') print("") # print() 即可
continue和break
-
对比:循环是本关复活点
-
continue:临时中断 -- 掉了一血,回到复活点重新开始
-
break:永久中断 -- 本关通关了,跳过,去下一关
-
-
continue
-
代码示例
# continue for i in range(1, 3): print("语句1:外层循环") # 语句1:外层循环2次 for j in range(1, 5): print("语句2:内层循环") # 语句2:内存循环4次 continue; print("语句3:内存循环") # 语句3:被跳过 print("语句4:跳出所有循环") # 语句4:所有循环结束后,执行1次 """ 输出结果: 语句1:外层循环 语句2:内层循环 语句2:内层循环 语句2:内层循环 语句2:内层循环 语句1:外层循环 语句2:内层循环 语句2:内层循环 语句2:内层循环 语句2:内层循环 语句4:跳出所有循环 """
-
break
-
代码示例
# break for i in range(1, 4): print("语句1:外循环") # 语句1:外层循环3次 for j in range(1, 6): print("语句2:内循环") # 语句2:内存循环5次,执行1次后跳出 break print("语句3:内循环") # 语句3:被跳过 print("语句4:外循环") # 语句4:break跳出内循环后,继续执行外循环中的语句 print("语句5:跳出所有循环") # 语句5:所有循环结束后,执行1次 """ 语句1:外循环 语句2:内循环 语句4:外循环 语句1:外循环 语句2:内循环 语句4:外循环 语句1:外循环 语句2:内循环 语句4:外循环 语句5:跳出所有循环 """
循环综合案例
-
代码示例
# 练习:发工资 import random count = 10000 for i in range(1, 21): score = random.randint(1, 10) if score < 5: print(f"员工{i},绩效分{score},低于5,不发工资,下一位。") continue # continue else: if count >= 1000: count -= 1000 print(f"向员工{i}发放工资1000元,账户余额为{count}") else: print("工资发完了,下个月领取吧") break # 使用break """ 向员工1发放工资1000元,账户余额为9000 员工2,绩效分1,低于5,不发工资,下一位。 员工3,绩效分4,低于5,不发工资,下一位。 向员工4发放工资1000元,账户余额为8000 向员工5发放工资1000元,账户余额为7000 员工6,绩效分3,低于5,不发工资,下一位。 员工7,绩效分1,低于5,不发工资,下一位。 员工8,绩效分3,低于5,不发工资,下一位。 向员工9发放工资1000元,账户余额为6000 向员工10发放工资1000元,账户余额为5000 员工11,绩效分2,低于5,不发工资,下一位。 向员工12发放工资1000元,账户余额为4000 员工13,绩效分3,低于5,不发工资,下一位。 向员工14发放工资1000元,账户余额为3000 员工15,绩效分1,低于5,不发工资,下一位。 向员工16发放工资1000元,账户余额为2000 向员工17发放工资1000元,账户余额为1000 员工18,绩效分4,低于5,不发工资,下一位。 员工19,绩效分1,低于5,不发工资,下一位。 向员工20发放工资1000元,账户余额为0 """