Python训练营 Day 5 练习任务:更优雅的循环 – for 循环

内容分享1周前发布
0 1 0

练习1:阶乘计算器
编写一个程序,让用户输入一个正整数n,然后程序计算n的阶乘(n!)。n! = 1 * 2 * 3 * … * n。
提示: 使用 for 循环和一个初始为1的累乘变量。

核心思路: 使用for循环和累乘变量。

  1. 初始化一个变量result为1。
  2. 使用for循环,从1到n(包括n)遍历每个数字。
  3. 在循环中,将当前数字乘到result上。
  4. 循环结束后,打印result。
# 阶乘计算器:计算n! = 1×2×3×...×n
# 获取用户输入的正整数n
n = int(input("请输入一个正整数n: "))

# 初始化累乘变量(阶乘从1开始累积)
factorial = 1

# 使用for循环计算阶乘(从1到n依次相乘)
for i in range(1, n + 1):
    factorial *= i  # 等价于 factorial = factorial * i

# 打印结果
print(f"{n}的阶乘是: {factorial}")

代码说明:

  1. 输入处理:通过input()获取用户输入,转换为整数n(确保是正整数)。
  2. 累乘变量初始化:factorial初始值设为 1(由于 1 是乘法的单位元,不会影响初始乘积)。
  3. 循环计算:range(1, n + 1)生成 1 到 n 的整数序列(包含 n),for 循环依次将每个整数与factorial相乘,实现阶乘累积。当 n=5 时,循环过程为:1×1 → 1×2 → 2×3 → 6×4 → 24×5,最终结果为 120。
  4. 输出格式:使用 f-string 按照示例格式输出结果,清晰展示计算结果。

如果输入 n=0 或 n=1,程序也能正确输出结果(0! 和 1! 均为 1),逻辑完整

练习2:寻找最大值
编写一个程序,让用户连续输入5个数字,然后找出这5个数字中的最大值并打印。
提示: 在循环外设置一个变量 max_number 初始值很小(如第一个输入的数字),然后在循环中每次输入新数字时,比较它和 max_number 的大小,如果新数字更大,就更新 max_number。

示例运行效果:

请输入第1个数字: 10
请输入第2个数字: 25
请输入第3个数字: 8
请输入第4个数字: 40
请输入第5个数字: 15
这5个数字中最大值是: 40

以下是实现 “寻找最大值” 的程序,按照提示思路设计,符合示例运行效果

# 寻找5个数字中的最大值
# 初始化最大值变量(先获取第一个数字作为初始值)
max_number = float(input(f"请输入第1个数字: "))

# 循环获取剩下的4个数字(共5个)
for i in range(2, 6):  # i从2到5,对应第2到第5个数字
    current = float(input(f"请输入第{i}个数字: "))
    # 比较当前数字与最大值,若更大则更新最大值
    if current > max_number:
        max_number = current

# 打印结果
print(f"这5个数字中最大值是: {max_number}")

代码说明:

  1. 初始值设置:将第一个输入的数字直接赋值给max_number,作为初始最大值(避免使用固定的 “很小的值”,更灵活)。
  2. 循环输入与比较:用range(2, 6)控制循环 4 次,分别获取第 2 到第 5 个数字。每次输入后,通过if current > max_number判断:若当前数字更大,则更新max_number为当前数字。
  3. 数据类型:使用float()转换输入,支持小数(如输入 3.5、9.8 等也能正确比较)。
  4. 输出格式:严格按照示例格式打印结果,清晰展示最大值。

程序逻辑通用,若需修改输入数字的数量(如改为 8 个),只需调整range(2, 6)为range(2, 9)即可。

练习3(挑战):打印九九乘法表
使用嵌套的 for 循环(一个循环 inside 另一个循环)打印出我们熟悉的九九乘法表。
提示: 外层循环变量 i 从1到9,控制行数。内层循环变量 j 从1到i,控制每行打印的列数。

示例运行效果(部分):

1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
...

以下是使用嵌套 for 循环实现的九九乘法表程序,完全符合提示思路和示例格式:

python

# 打印九九乘法表
# 外层循环控制行数(i从1到9)
for i in range(1, 10):
    # 内层循环控制每行的列数(j从1到i,确保每行最多i个式子)
    for j in range(1, i + 1):
        # 打印乘法式子,用end=" "保持在同一行(不换行)
        print(f"{j}*{i}={j*i}", end=" ")
    # 每行结束后换行
    print()
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 

代码说明:

  1. 外层循环(i):range(1, 10) 生成 1 到 9 的数字,控制乘法表的行数(共 9 行),i代表每行乘法式子中的第二个数(如第 3 行的*3)。
  2. 内层循环(j):range(1, i + 1) 生成 1 到 i 的数字,控制每行的列数(第 i 行有 i 个式子),j代表每个式子中的第一个数(如1*3中的 1)。
  3. 打印控制:内层循环用 end=” ” 确保同一行的式子用空格分隔,不换行。内层循环结束后,用 print() 单独换行,开始下一行的打印。
  4. 格式匹配:每个式子严格按照 j*i=j*i 的格式(如2*3=6),与示例效果一致,完整呈现九九乘法表的规律。
© 版权声明

相关文章

1 条评论

您必须登录才能参与评论!
立即登录