# @Author :zjc
# @File :020_blank_pyrimid.py
# Time :2024/8/30 10:38
# 总层数
# 1. 对于需要替换的地方进行替换,循环中需要加1
total_level = 5
# i控制我们的层数
for i in range(1, total_level + 1):
# 1.在用k表示输出空格数
for k in range(total_level - i):
print(" ", end="")
# 1. j控制每层输出*号的个数
# 2. 改成i+1,因为(1,2)中只有1
# for j in range(1, i+1):
# 3. 也可以直接改成i默认开始为0,(0,6)
# 4.再次改进,2*i-1
for j in range(2 * i - 1):
# j == 2 * (i - 1)
if j == 0 or j == 2 * (i - 1):
# 这里end="",表示输出不换行
print("*", end="")
else:
print(" ", end="")
# 每层输出后进行换行,自动换行
print("")
# 打印下半部分(更简单的逻辑)
# 1. -1表示逆序打印,5,4,3,2,1
# 2. 只会之行4次:4,3,2,1
for i in range(total_level - 1, 0, -1):
# 打印前导空格
# 1. 5-4=1 5-3=2 5-2=3 5-1=4
for k in range(total_level - i):
print(" ", end="")
# 打印星号
for j in range(2 * i - 1):
# 第一次:2*4-1=7,j=0就是最开始,2*4-2=6,因为j从0开始,要减2
if j == 0 or j == 2 * i - 2:
print("*", end="")
else:
print(" ", end="")
print("") # 换行
P61 多重循环(2)2024/8/30
一、应用实例演示
python复制代码
# @Author :zjc
# @File :022_stu_score.py
# Time :2024/8/30 16:22
# 1、统计3个班成绩情况,每个班有5名同学,要求完成[文件: stu_score.py]
# 1)求出各个班的平均分和所有班级的平均分,学生的成绩从键盘输入
# 2)统计三个班及格人数
# 重要的编程思路:(1)化繁为简(2)先死后活[先考虑3个班,每个班5名学生]
# 化繁为简
# 1.统计1个班成绩情况,求出一个班的平均分
# 2.统计3个班成绩情况,求出各个班的平均分、所有班级的平均分和及格人数
# 3.将班级和学生做成一个变量
# 定义班级,学生个数
class_num = 3
stu_sum = 5
# 统计所有班级的平均分
total = 0.0
# 统计所有的及格人数
pass_num = 0
for j in range(1, class_num+1):
# 定义相关变量:统计一个班的总分
# 1. 定义在第一个循环开始,因为每一次要清零
sum = 0.0
# 统计一个班成绩情况,求出每个班平均分-for 循环5次,接收学员的成绩
for i in range(1, stu_sum+1):
score = float(input(f"请输入第{j}个班的第{i}个学生的成绩:"))
# 判断是否及格
if score >= 60.0:
pass_num += 1
# 累加到sum
sum += score
print(f"第{j}班的情况,平均分{sum / stu_sum}")
# 将sum累加到total,总平均分
total += sum
print(f"所有班级的平均分{total / (stu_sum * class_num)} 及格人数:{pass_num}")
python复制代码
# @Author :zjc
# @File :023_99_multiply_table.py
# Time :2024/8/30 16:48
# 1.定义变量i和j
for i in range(1, 10):
for j in range(1, i + 1):
print(f" {j}*{i}={i * j}", end="")
print("")
P62 break语句(1)2024/8/30
一、需求
需求 :
随机生成1-100的一个数,直到生成了97这个数,看看你一共用了几次?
提示使用random模块的randint()函数来生成随机数,该函数的语法为
代码演示:
python复制代码
# 演示random.randint()的使用
# 导入random模块
import random
for i in range(8):
n = random.randint(1, 100)
print(n)
二、基本介绍
说明 :
break语句拥用于终止某个语句块的执行,使用在循环中。
break 流程示意图:
代码演示:
python复制代码
# @Author :zjc
# @File :024_num_break.py
# Time :2024/8/30 17:33
# 随机生成1-100的一个数,直到生成了97这个数,看看你一共用了几次?
"""
思路分析:
1. 定义变量count 统计一共用了多少次 count += 1
2. 使用while true 无限循环生成随机数,直到生成97就退出
3. 输出count 即可
"""
# 导入模块
import random
count = 0
while True:
# 生成随机数:
n = random.randint(1, 100)
# 统计次数:
count += 1
if n == 97:
break
print(f"生成97一共用了{count}次")
P63 break语句(2)2024/8/30
一、注意事项和细节
break语句是用在for或while循环所嵌套的代码
它会终结最近的外层循环 ,如果循环有可选的else子句,也会跳过该子句
python复制代码
# @Author :zjc
# @File :025_break_01.py
# Time :2024/8/30 17:48
count = 0
while True:
print("hi while")
count += 1
if count == 3:
# 会终结外层循环,不会执行下面的else
break
while True:
print("OK while")
# 只会终结内存循环
break
else:
print("Hello, while")
如果一个for循环被break所终结,该循环的控制变量会保持其当前值
python复制代码
nums = [1, 2, 3, 4, 5, 6]
for i in nums:
if i > 3:
break
print("i=", i) # i = 4
二、课堂练习题
1-100以内的数求和,求出当和第一次大于20的当前控制循环的变量值是多少?
python复制代码
# @Author :zjc
# @File :026_break_exercise01.py
# Time :2024/8/30 19:47
# 1-100以内的数求和,求出当和第一次大于20的当前控制循环的变量值是多少?
"""
思路分析:
1. 定义变量sum记录总和
2. for循环遍历1-100,当sum > 20时,就退出 break
3. 输出
"""
sum = 0
for i in range(1, 101):
# 累加
sum += i
# 判断
if sum > 20:
print("当和大于20时,i为{}".format(i))
break
print("总和为", sum)
# 题目2:自定义cal01函数,可以计算从1+..+1000的结果
"""
思路分析:
1、函数名 cal01
2、形参列表
3、函数体:计算从1+..+1000的结果
"""
# 定义函数
def cal01():
sum = 0
for i in range(1, 1001):
sum += i
print(f"1+...1000的结果:{sum}")
# 调用函数
cal01()
自定义cal02函数,该函数可以接收一个数n,计算从1+...+n的结果Ⅰ
python复制代码
# 自定义cal02函数,该函数可以接收一个数n,计算从1+..+n的结果
"""
思路分析:
1、函数名:cal02
2、形参列表:(n)
3、函数体:计算从1+..+n的结果
"""
def cal02(n):
total = 0
for i in range(1, n + 1):
total += i
print("total = ", total)
# 调用
# 1.调用函数时传入了实参
# 2.相当于把100赋给了形参n
cal02(100)
# 比如我们要计算多个数的和,但是不确定是几个数*[0到多]
def sum(*args): # args -> (1, 2)
# 输出了args的数据和类型(1,2,)
print(f"args->{args}类型是->{type(args)}")
total = 0
# 对args进行遍历,即对元组遍历
for ele in args:
total += ele
return total
# 调用测试
result = sum(1, 2)
print(f"result->{result}")