• #第11期-计算阶乘">#第11期-计算阶乘
    • #1 问题描述">#1 问题描述
    • #2 解题思路">#2 解题思路
    • #3 解题方法">#3 解题方法
      • #方法一:for循环">#方法一:for循环
      • #方法二: 递归法">#方法二: 递归法
      • #方法三: reduce()函数">#方法三: reduce()函数
      • #方法四: factorial()函数">#方法四: factorial()函数
    • #4 视频解析">#4 视频解析
  • #第12期—阿姆斯特朗数">#第12期—阿姆斯特朗数
    • #1 问题描述">#1 问题描述
    • #2 解题思路">#2 解题思路
    • #3 解题方法">#3 解题方法
      • #方法一">#方法一
      • #方法二">#方法二
    • #4 视频解析">#4 视频解析
  • #第13期—温度转化">#第13期—温度转化
    • #1 问题描述">#1 问题描述
    • #2 解题思路">#2 解题思路
    • #3 解题方法">#3 解题方法
    • #4 视频解析">#4 视频解析
  • #第14期-数字排列">#第14期-数字排列
    • #1 问题描述">#1 问题描述
    • #2 解题思路">#2 解题思路
    • #3 解题方法">#3 解题方法
      • #方法一">#方法一
      • #方法二">#方法二
    • #4 视频解析">#4 视频解析
  • #第15期-反转字符串">#第15期-反转字符串
    • #1 问题描述">#1 问题描述
    • #2 解题思路">#2 解题思路
    • #3 解题方法">#3 解题方法
      • #方法一:for循环">#方法一:for循环
      • #方法二:反向切片">#方法二:反向切片
      • #方法三:反转列表">#方法三:反转列表
      • #方法四:递归">#方法四:递归
      • #方法五:reduce函数">#方法五:reduce函数
    • #4 视频解析">#4 视频解析
  • #第16期—杨辉三角">#第16期—杨辉三角
    • #1 问题描述">#1 问题描述
    • #2 解题思路">#2 解题思路
    • #3 解题方法">#3 解题方法
    • #4 视频解析">#4 视频解析
  • #第17期—奖金计算">#第17期—奖金计算
    • #1 问题描述">#1 问题描述
    • #2 解题思路">#2 解题思路
    • #3 解题方法">#3 解题方法
      • #方法一">#方法一
      • #方法二">#方法二
    • #4 视频解析">#4 视频解析
  • #第18期-判断素数">#第18期-判断素数
    • #1 问题描述">#1 问题描述
    • #2 解题思路">#2 解题思路
    • #3 解题方法">#3 解题方法
      • #方法一">#方法一
      • #方法二">#方法二
      • #方法三">#方法三
    • #4 视频解析">#4 视频解析
  • #第19期—百钱百鸡">#第19期—百钱百鸡
    • #1 问题描述">#1 问题描述
    • #2 解题思路">#2 解题思路
    • #3 解题方法">#3 解题方法
      • #方法一:枚举法">#方法一:枚举法
      • #方法二:公式推导法">#方法二:公式推导法
    • #4 视频解析">#4 视频解析
  • #第20期-分数序列求和">#第20期-分数序列求和
    • #1 问题描述">#1 问题描述
    • #2 解题思路">#2 解题思路
    • #3 解题方法">#3 解题方法
      • #方法一:递归法">#方法一:递归法
      • #方法二:for循环">#方法二:for循环
    • #4 视频解析">#4 视频解析

    #第11期-计算阶乘

    Python是一门需要不断实践练习的编程语言,本文档将AI大学堂学员交流群的Python每周练习进行汇总,希望各位小伙伴能够多进行实践练习,逐渐爱上这门神奇的编程语言,掌握它并在生活中能够使用它。

    #1 问题描述

    阶乘是基斯顿·卡曼(Christian Kramp,1760~1826)于 1808 年发明的运算符号。
    一个正整数的阶乘(factorial)是所有小于及等于该数的正整数的积,通俗的讲也就是按顺序从1乘到n,所得的那个数就是n的阶乘。
    0的阶乘为1,自然数n的阶乘写作n!。
    即:
    0!= 1
    1!= 1
    2!= 2 × 1!= 2 × 1
    3!= 3 × 2!= 3 × 2 × 1
    n!= n × (n - 1)!= n × (n - 1) × (n - 2) ×…× 2 × 1 输入一个整数n,求其阶乘n!

    #2 解题思路

    • 用input函数请用户输入一个整数,因为负数无阶乘,需使用户输入的数为自然数
    • 根据阶乘的特点:n!= n × (n - 1)!= n × (n - 1) × (n - 2) ×…× 2 × 1,可用for循环、递归等方法求解
    • 需考虑特殊情况:0!= 1

    #3 解题方法

    #方法一:for循环

    1. a = int(input('请输入一个自然数:'))
    2. result = 1
    3. if a < 0:
    4. print('负数没有阶乘')
    5. elif a == 0:
    6. print('0的阶乘为1')
    7. else:
    8. for i in range(1, a + 1):
    9. result *= i
    10. print(f"{a}的阶乘为{result}")
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

    第1行: 定义变量a,用input函数使用户输入数字,int函数将其转换为整型
    第2行: 创建一个存储阶乘运算结果的变量result,变量初始值为1
    第3-10行: 用if…elif…else语句对用户输入的数值进行判断。
    若用户输入的数值小于0,输出“负数没有阶乘”;
    若用户输入的数值等于0,输出“0的阶乘为1”;
    否则用for循环遍历1 至 a 的整数,在每轮循环中,result都会与循环变量 i 相乘并将乘积结果再赋值给result,当for循环结束时,result的值就是自然数n阶乘的运算结果,最后用print函数输出阶乘结果

    #方法二: 递归法

    1. def factorial(n):
    2. assert n >= 0, "请输入自然数"
    3. if n == 0:
    4. return 1
    5. return n * factorial(n - 1)
    6. a = int(input('请输入一个自然数:'))
    7. print(factorial(a))
    1
    2
    3
    4
    5
    6
    7
    8
    9

    第1行: 定义函数factorial,传入参数n
    第2行: 用assert断言函数限定参数n大于或等于0,若大于或等于0,执行后面的代码,否则报错“AssertionError: 请输入自然数!

    assert断言函数的用法在第9期—最大公约数与最小公倍数(opens new window)中有讲解,大家可以查看哦~

    第3-5行: 设定递归的结束条件,当 n 为 0时,返回值为1,否则返回值为n factorial(n - 1)
    第8行: 定义变量a,用input函数使用户输入数字,int函数将其转换为整型
    *第9行:
    为参数n赋值为a,用print函数打印计算结果

    #方法三: reduce()函数

    1. from functools import reduce
    2. def factorial(n):
    3. assert n >= 0, "请输入自然数"
    4. if n == 0:
    5. return 1
    6. return reduce(lambda x, y: x * y, range(1, n + 1))
    7. a = int(input('请输入一个自然数:'))
    8. print(factorial(a))
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    第1行: 从functools模块中导入reduce()函数
    第4行: 定义函数factorial,传入参数n
    第5行: 用assert断言函数限定参数n大于或等于0,若大于或等于0,执行后面的代码,否则报错“AssertionError: 请输入自然数!”
    第6-7行: 设定递归的结束条件,当 n 为 0时,返回值为1
    第8行: 调用reduce函数,使用lambda 表达式输出前n项的积
    第11行: 定义变量a,用input函数使用户输入数字,int函数将其转换为整型
    第12行: 为参数n赋值为a,用print函数打印计算结果

    reduce() 函数
    reduce() 函数是functools模块中的一个函数,其作用是对参数序列中元素进行累积。
    语法:
    reduce(function, iterable[, initializer])
    参数说明:
    function:是包含两个参数的函数
    iterable :可迭代对象
    initializer :初始参数

    1. def prod(x, y):
    2. return x + y
    3. print(reduce(prod, [1, 2, 3, 4, 5])) # 15
    1
    2
    3 函数prod有两个参数x和y,迭代对象是[1,2,3,4,5],计算过程为((((1+2)+3)+4)+5),在函数function的两个参数中,左边的参数x是被累积的值,而右边的参数y是依次从序列中获取的值。
    可以使用lambda表达式来简化代码:
    1. print(reduce(lambda x, y: x + y, [1, 2, 3, 4, 5])) # 15
    1

    lambda 表达式
    Lambda 函数是Python中的匿名函数,也就是没有具体名称的函数,通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用 。

    lambda 表达式的两个要点:
    • lambda 表达式必须使用 lambda 关键字定义。
    • 在 lambda 关键字之后、冒号左边为参数列表,可不带参数,也可有多个参数。若有多个参数,则参数间用逗号隔开,冒号右边为 lambda 表达式的返回值。

    #方法四: factorial()函数

    1. import math
    2. a = int(input('请输入一个自然数:'))
    3. result = math.factorial(a)
    4. print(f"{a}的阶乘为{result}")
    1
    2
    3
    4

    第1行: 导入模块math
    第2行: 定义变量a,用input函数使用户输入数字,int函数将其转换为整型
    第3行: 创建变量result,调用math模块中的factorial函数,传入参数a
    第4行: print函数输出结果

    #4 视频解析

    高清视频讲解,请查看AI大学堂Python基础实战100例(opens new window)
    关注『讯飞AI大学堂』公众号,发送 python100 即可领取Python基础实战100例源代码
    计算11-20 - 图1 更新于: 12/28/2021, 7:43:14 AM

    #第12期—阿姆斯特朗数

    Python是一门需要不断实践练习的编程语言,本文档将AI大学堂学员交流群的Python每周练习进行汇总,希望各位小伙伴能够多进行实践练习,逐渐爱上这门神奇的编程语言,掌握它并在生活中能够使用它。

    #1 问题描述

    如果一个n位正整数等于其各位数字的n次方之和,则称该数为阿姆斯特朗数。
    n = 3时,这个数被称为水仙花数。
    如:

    1-100000的阿姆斯特朗数如下表所示:
    位数 阿姆斯特朗数
    1 1,2,3,4,5,6,7,8,9
    3 153, 370, 371, 407
    4 1634, 8208, 9474
    5 54748, 92727, 93084
    请用户输入最大值与最小值,获取指定区间的阿姆斯特朗数~

    #2 解题思路

    • 用input函数请用户输入查找的区间
    • 用for循环遍历这个区间的数值
    • 判断位数,将数值拆分,计算每个位数上数字的n次方和
    • 将计算出的值与该数值进行比较,若相等,则为阿姆斯特朗数,输出结果

    #3 解题方法

    #方法一

    1. lower = int(input("请输入最小值: "))
    2. upper = int(input("请输入最大值: "))
    3. assert lower > 0 and upper > 0, "请输入正整数!"
    4. for num in range(lower, upper + 1):
    5. sum = 0
    6. n = len(str(num))
    7. temp = num
    8. while temp > 0:
    9. digit = temp % 10
    10. sum += digit ** n
    11. temp //= 10
    12. if num == sum:
    13. print(num, end=' ')
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17

    第1-2行: 定义变量lower和upper,分别用input函数获取用户输入的最小值与最大值,int函数将其转换为整型
    第4行: 因为对正整数求阿姆斯特朗数,所以用assert断言函数限定变量lower和upper大于0,若大于0,执行后面的代码,否则报错“AssertionError: 请输入正整数!”
    第6行: 用for循环遍历最小值与最大值之间所有的数
    第7行: 创建变量sum,初始赋值为1,用于存储数值每个位数上数字的n次方和
    第8行: 用len函数获取变量num的长度,也即该数值的位数
    第9行: 将变量num赋值给变量temp
    第11-14行: 用while循环计算每个位数上数字的n次方和,当temp > 0时,进入循环,temp除以10取余,获取该数值的个位数,计算个位数的 n 次方,继续将temp除以10,对商取整,直至temp小于或等于0时退出while循环
    第16-17行: 用if语句判断,若计算出的值与该数值相等,则用print函数输出结果

    如,对数值153,n = 3,
    digit = 153 % 10 = 3;sum = 0 + 3^3;temp //= 10 后为15,继续进入下一次循环
    digit= 15 % 10 = 5;sum = 0 + 3^3 + 5^3;temp //= 10 后为1, 继续进入下一次循环
    digit = 1 % 10 = 1;sum = 0 + 3^3 + 5^3 + 1^3,temp //= 10 后为0, 退出while循环

    #方法二

    1. lower = int(input("请输入最小值: "))
    2. upper = int(input("请输入最大值: "))
    3. assert lower > 0 and upper > 0, "请输入正整数!"
    4. for num in range(lower, upper + 1):
    5. sum = 0
    6. n = len(str(num))
    7. for i in str(num):
    8. sum += int(i) ** n
    9. if num == sum:
    10. print(num, end=' ')
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14

    第1-2行: 定义变量lower和upper,分别用input函数获取用户输入的最小值与最大值,int函数将其转换为整型
    第4行: 因为对正整数求阿姆斯特朗数,所以用assert断言函数限定变量lower和upper大于0,若大于0,执行后面的代码,否则报错“AssertionError: 请输入正整数!”
    第6行: 用for循环遍历最小值与最大值之间所有的数
    第7行: 创建变量sum,初始赋值为1,用于存储数值每个位数上数字的n次方和,计算每个位数上数字的n次方和
    第8行: 用len函数获取变量num的长度,也即该数值的位数
    第10-11行: 用str函数将num转换为字符串类型,for循环遍历字符串中的每一个元素
    第13-14行: 用if语句判断,若计算出的值与该数值相等,则用print函数输出结果

    如,对数值153,n = 3,
    第一次for循环,i = 1,sum = 0 + 1^3;
    第二次for循环,i = 5,sum = 0 + 1^3 + 5^3;
    第三次for循环,i = 3,sum = 0 + 1^3 + 5^3+ 3^3

    #4 视频解析

    高清视频讲解,请查看AI大学堂Python基础实战100例(opens new window)
    关注『讯飞AI大学堂』公众号,发送 python100 即可领取Python基础实战100例源代码
    计算11-20 - 图2 更新于: 12/28/2021, 7:43:14 AM

    #第13期—温度转化

    Python是一门需要不断实践练习的编程语言,本文档将AI大学堂学员交流群的Python每周练习进行汇总,希望各位小伙伴能够多进行实践练习,逐渐爱上这门神奇的编程语言,掌握它并在生活中能够使用它。

    #1 问题描述

    温度的刻画有两个不同体系:摄氏度(Celsius)和华氏度(Fahrenheit)
    摄氏度: 中国等世界大多数国家使用
    以1标准大气压下水的结冰点为0度,沸点为100度,将温度进行等分刻画
    华氏度: 美国、英国等国家使用
    以1标准大气压下水的结冰点为32度,沸点为212度,将温度进行等分刻画 根据华氏和摄氏温度定义,转换算法如下:(C表示摄氏度、F表示华氏度)
    C = ( F - 32 ) / 1.8
    F = C * 1.8 + 32 请用Python编写程序将用户输入的温度进行转换~

    #2 解题思路

    • 首先请用户输入带华氏或摄氏标志的温度值
    • 然后根据温度标志选择适当的温度转换算法
    • 最后输出转换后的温度

    #3 解题方法

    1. num = input("请输入带有符号的温度值: ")
    2. if num[-1] in ['C', 'c']:
    3. f = 1.8 * float(num[0:-1]) + 32
    4. print(f"转换后的温度是{f:0.2f}华氏度")
    5. elif num[-1] in ['F', 'f']:
    6. c = (float(num[0:-1]) - 32) / 1.8
    7. print(f"转换后的温度是{c:0.2f}摄氏度")
    8. else:
    9. print("输入格式错误")
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

    第1行: 定义变量num,用input函数获取用户输入的带有符号的温度值
    第3-5行: 通过索引获取用户输入的最后一位字符,用in判断该字符是否在列表[‘C’, ‘c’]中,即判断用户输入的是不是摄氏温度。若用户输入的是摄氏温度,则通过温度转换公式将摄氏温度转换为华氏温度,用print函数输出运行结果,保留小数点后两位。
    第6-8行: 用in判断用户输入的最后一位字符是否在列表[‘F’, ‘f’]中,即判断用户输入的是不是华氏温度。若用户输入的是华氏温度,则通过温度转换公式将华氏温度转换为摄氏温度,用print函数输出运行结果。
    第9-10行: 否则,用print函数打印“输入格式错误”

    • 由于input()函数返回的数据类型为字符串型,所以第4行需要用float函数将其转化为浮点数类型再进行计算
    • 用户输入的字符串是有序的排列,如用户输入34C,则第一个字符是3,第二个是4,第三个是C
    • 在 Python 中,字符串中的字符可以通过索引来提取,从前往后索引时,下标从 0 开始,从后往前索引时,下标从 -1 开始。因此num[0:-1]表示取从前往后的第一个字符到从后往前的第一个字符,但不包括从后往前的第一个字符(因为索引不包含尾下标的元素),如用户输入34C,获取的元素是34
      计算11-20 - 图3

    #4 视频解析

    高清视频讲解,请查看AI大学堂Python基础实战100例(opens new window)
    关注『讯飞AI大学堂』公众号,发送 python100 即可领取Python基础实战100例源代码
    计算11-20 - 图4 更新于: 12/28/2021, 7:43:14 AM

    #第14期-数字排列

    Python是一门需要不断实践练习的编程语言,本文档将AI大学堂学员交流群的Python每周练习进行汇总,希望各位小伙伴能够多进行实践练习,逐渐爱上这门神奇的编程语言,掌握它并在生活中能够使用它。

    #1 问题描述

    四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?

    #2 解题思路

    • 嵌套for循环使填在百位、十位、个位的数字都是1、2、3、4。
    • 组成所有的排列后再去掉不满足条件的排列
    • 用print函数输出结果

    #3 解题方法

    #方法一

    1. total = 0
    2. for i in range(1, 5):
    3. for j in range(1, 5):
    4. for k in range(1, 5):
    5. if i != j and j != k and i != k:
    6. print(str(i)+str(j)+str(k), end=' ')
    7. total += 1
    8. print(f"\n共有{total}个数")
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

    第1行: 创建变量total,用于存储1,2,3,4四个数字所组成三位数的个数,初始赋值位0
    第3-5行: 用变量 i, j, k 分别表示这个三位数的百位、十位和个位的数字,用3重嵌套for循环分别遍历百位、十位和个位上 1 至 4 的整数
    第6行: 因为要组成无重复数字的三位数,所以 i, j, k 两两不相等
    第7行: 用print函数打印排列结果,end=’ ‘将结果输出到同一行,以空格结尾
    第8行: 每次循环后total在原有的基础上加 1
    第10行: 用print函数打印组成三位数的个数,\n换行输出

    #方法二

    1. from itertools import permutations
    2. total = 0
    3. for i in permutations('1234', 3):
    4. print(''.join(i), end=' ')
    5. total += 1
    6. print(f"\n共有{total}个数")
    1
    2
    3
    4
    5
    6
    7
    8
    9

    第1行: 从itertools模块中导入permutations函数

    itertools的官方描述:Functional tools for creating and using iterators,即用于创建高效迭代器的函数。
    itertools是Python中的内置模块,一般用于创建自定义迭代器

    第3行: 创建变量total,用于存储1,2,3,4四个数字所组成三位数的个数,初始赋值位0
    第5行: 调用permutations排序函数,排序对象为字符串 ‘1234’ ,指定长度参数为3,用for循环遍历每一个排序
    第6行: 由于permutations函数排序后会产生一个元组序列,所以用join函数将元素合并成一个新的字符串,end=’ ‘将结果输出到同一行,以空格结尾
    第7行: 每次循环后total在原有的基础上加 1
    第9行: 用print函数打印组成三位数的个数,\n换行输出

    permutations函数
    permutations函数返回可迭代对象的所有排列(顺序有关),排序后会产生一个元组序列
    语法:
    permutations(item [,r])
    item为排序的对象
    r为长度参数,用于指定长度的排列中

    join()函数
    join() 方法是非常重要的字符串方法,用来将列表、集合或元组中包含的多个字符串连接成一个字符串。
    语法:
    ‘sep’.join(sequence)
    参数说明:
    sep:分隔符。可以为空
    sequence:要连接的元素序列
    上面语法的意思是:以sep作为分隔符,将sequence的所有元素合并成一个新的字符串

    #4 视频解析

    高清视频讲解,请查看AI大学堂Python基础实战100例(opens new window)
    关注『讯飞AI大学堂』公众号,发送 python100 即可领取Python基础实战100例源代码
    计算11-20 - 图5 更新于: 12/28/2021, 7:43:14 AM

    #第15期-反转字符串

    Python是一门需要不断实践练习的编程语言,本文档将AI大学堂学员交流群的Python每周练习进行汇总,希望各位小伙伴能够多进行实践练习,逐渐爱上这门神奇的编程语言,掌握它并在生活中能够使用它。

    #1 问题描述

    请用户输入一个字符串,将其进行反转,输出反转后的字符串
    如将字符串’abcde’, 反转为’edcba’

    #2 解题思路

    字符串是有序的排列,反转字符串可用for循环、反向切片、反转列表、递归、reduce函数等方法

    #3 解题方法

    #方法一:for循环

    1. a = input("请输入字符串:")
    2. b = ''
    3. for i in a:
    4. b = i + b
    5. print(b)
    1
    2
    3
    4
    5

    第1行: 用input函数获取用户输入的字符串,赋值给变量 a
    第2行: 创建变量b,赋值为一个空字符串
    第3行: 由于字符串是有序的排列,用for循环遍历a中的每一个元素
    第4行: 每次循环都将循环变量 i 与变量 b 连接起来,再赋值给变量b,循环结束时,b 为 a 的反向字符串
    第5行: 输出变量 b

    以字符串’yth’为例
    第一次循环,i = ‘y’, b = ‘y’
    第二次循环,i = ‘t’, b = ‘t’ + ‘y’ => ‘ty’
    第三次循环,i = ‘h’, b = ‘h’ + ‘ty’ =>’hty’

    #方法二:反向切片

    1. a = input("请输入字符串:")
    2. b = a[::-1]
    3. print(b)
    1
    2
    3

    第1行: 用input函数获取用户输入的字符串,赋值给变量a
    第2行: 对字符串 a 切片,步长为-1, 即字符串的反转,将反转结果赋值给变量 b
    第3行: 输出变量 b

    #方法三:反转列表

    1. a = input("请输入字符串:")
    2. b = list(a)
    3. b.reverse()
    4. c = ''.join(b)
    5. print(c)
    1
    2
    3
    4
    5

    第1行: 用input函数获取用户输入的字符串,赋值给变量a
    第2行: 创建变量b,将用户输入的字符串转化为字符串列表
    第3行: reverse() 方法反转元素的排序顺序,用reverse()方法对列表b进行反转
    第4行: 用字符串的join()方法遍历列表,合并成一个字符串
    第5行: 输出变量c

    #方法四:递归

    1. a = input("请输入字符串:")
    2. def f(x):
    3. if len(x) <= 1:
    4. return x
    5. return f(x[1:]) + x[0]
    6. print(f(a))
    1
    2
    3
    4
    5
    6
    7

    第1行: 用input函数获取用户输入的字符串,赋值给变量a
    第2行: 定义函数 f,传入参数x
    第3-4行: 设定递归算法的结束条件,即当参数 x 的长度 小于或等于 1 时,返回值为 x
    第5行: 否则返回值为f(x[1:]) + x[0]
    第7行: 为参数 x 赋值为 a, 并输出f(a)的结果

    以字符串 ‘abcde’ 为例
    对于f(‘abcde’), 返回值为f(‘bcde’) + ‘a’
    对于f(‘bcde’), 返回值为f(‘cde’) + ‘b’
    对于f(‘cde’), 返回值为f(‘de’) + ‘c’
    对于f(‘d’), 返回值为f(‘e’) + ‘d’
    对于f(‘e’), 返回值为 ‘e’ (因为len(e) = 1)
    所以:
    f(‘de’)为’e’ + ‘d’ => ‘ed’
    f(‘cde’)为’ed’ + ‘c’ => ‘edc’
    f(‘bcde’)为’edc’ + ‘b’ =>’edcb’
    f(‘abcde’)为’edcb’ + ‘a’ =>’edcba’

    #方法五:reduce函数

    1. from functools import reduce
    2. a = input("请输入字符串:")
    3. b = reduce(lambda x, y: y + x, a)
    4. print(b)
    1
    2
    3
    4

    第1行: 从functools模块中导入reduce()函数
    第2行: 用input函数获取用户输入的字符串,赋值给变量a
    第3行: 调用reduce函数,使用lambda表达式输出反转字符串,并赋值给变量b
    第4行: 输出变量b

    以字符串 ‘abcde’ 为例
    x = ‘a’ y = ‘b’; y + x => ‘b’ + ‘a’ => ‘ba’
    x = ‘ba’ y = ‘c’; y + x => ‘c’ + ‘ba’ => ‘cba’
    x = ‘cba’ y = ‘d’; y + x => ‘d’ + ‘cba’ => ‘dcba’
    x = ‘dcba’ y = ‘e’; y + x => ‘e’ + ‘dcba’ => ‘edcba’

    第11期-计算阶乘(opens new window)中有详细讲解reduce函数和lambda表达式,大家可以查看哦~

    #4 视频解析

    高清视频讲解,请查看AI大学堂Python基础实战100例(opens new window)
    关注『讯飞AI大学堂』公众号,发送 python100 即可领取Python基础实战100例源代码
    计算11-20 - 图6 更新于: 12/28/2021, 7:43:14 AM

    #第16期—杨辉三角

    Python是一门需要不断实践练习的编程语言,本文档将AI大学堂学员交流群的Python每周练习进行汇总,希望各位小伙伴能够多进行实践练习,逐渐爱上这门神奇的编程语言,掌握它并在生活中能够使用它。

    #1 问题描述

    杨辉三角是中国数学史上的一个伟大成就,最早由中国南宋末年的数学家、教育家杨辉在其著作《详解九章算术》中提出的。在大约500年后的欧洲,法国数学家帕斯卡也发现了这一结论,因此杨辉三角又称为帕斯卡三角。 杨辉三角是一个无限堆成的数字金字塔,它的两条斜边都是由数字1组成的,而其余的数则是等于它肩上的两个数之和。

    1 1
    1 2 1
    1 3 3 1
    1 4 6 4 1
    1 5 10 10 5 1
    1 6 15 20 15 6 1
    1 7 21 35 35 21 7 1
    1 8 28 56 70 56 28 8 1

    杨辉三角的性质:

    • 每行首尾的数字都是1
    • 每行中间的各数都是它肩上两个数的和
    • 第n行的数字有n项
    • 第n行的项数总比n-1行多1个
    请用户输入一个非负整数n, 用Python输出杨辉三角前 n 行~

    #2 解题思路

    • 用input函数使用户输入行数
    • 创建两个列表,一个用于输出最后的结果,另一个输出每一行的数字,并将其添加到第一个列表中
    • 根据杨辉三角形的特点输出结果:每行首尾的数字都是1;每行中间的各数都是它肩上两个数的和

    #3 解题方法

    1. n = int(input("输入需要打印的杨辉三角行数 :"))
    2. assert n > 0, "请输入正整数!"
    3. list1 = []
    4. for i in range(n):
    5. list2 = []
    6. if i == 0:
    7. list2 = [1]
    8. elif i == 1:
    9. list2 = [1, 1]
    10. else:
    11. for j in range(i + 1):
    12. if j == 0 or j == i:
    13. list2.append(1)
    14. else:
    15. list2.append(list1[i - 1][j - 1] + list1[i - 1][j])
    16. list1.append(list2)
    17. space = len(list1[-1])
    18. for i in list1:
    19. print(' ' * (space * 4 // 2), end='')
    20. for j in i:
    21. print(f"{j:<4}", end='')
    22. print()
    23. space -= 1
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25

    第1行: 用input函数获取用户输入的行数,int函数将其转化为整型,并赋值给变量 n
    第2行: 用assert断言函数限定变量 n 大于0,若大于0,执行后面的代码,否则报错“AssertionError: 请输入正整数!”
    第4行: 创建一个空列表list1,用于完成整个序列的循环,输出杨辉三角
    第5行: 用for循环控制输出的行数
    第6行: 创建另一个空列表list2,用于存储每一行的数值
    第7-8行: 第一次循环i == 0,输出杨辉三角第一行
    第9-10行: 第二次循环i == 1,输出杨辉三角第二行
    第11-12行: 接着输出杨辉三角的其他行,变量 j 表示一行中的每一个元素,用for循环遍历每一行中的每一个元素
    第13-14行: 每行首尾的数字都是1,输出每行首尾的数字 1,添加到列表list2
    第15-16行: 每行中间的各数都是它肩上两个数的和,通过对双重列表的索引,获取中间这个数肩上的两个数,求和后将其添加到列表list2

    以杨辉三角第3行为例
    第3次循环时,i == 2, list1 = [[1], [1, 1]]
    求第3行中间的数 2 时, j 进行到第二次循环,j == 1
    2 等于第2行两个数值的和,即 list1中位置1的列表元素和,通过列表的索引,这两个元素分别是(list1[i - 1][j - 1] 和 list1[i - 1][j]

    第17行: 将列表list2添加到列表list1
    第19行: 为使杨辉三角每一行的数值能居中排列,设置每一行第一个数值前的空格数,用len函数获取list1最后一行的长度
    第20行: 由于list1是二维列表,用for循环遍历list1,循环变量 i 为一维列表,即杨辉三角每一行的数值列表
    第21行: 每个数值之间间隔4个空格,每一行第一个元素前的空格数为space 4 // 2, 用end将结果输出到同一行
    第22行: 在第19行for循环的基础上,嵌套一个for循环,获取杨辉三角每一行中的每一个元素
    第23行: 每个数值之间间隔4个空格,用end将结果输出到同一行
    第24行: 一行输出后,用print()换行输出下一行
    *第25行:
    由于第n行的数值比n-1行多1个,所以在一次循环后,space在原有基础上减 1
    运行结果如下图所示:
    计算11-20 - 图7

    #4 视频解析

    高清视频讲解,请查看AI大学堂Python基础实战100例(opens new window)
    关注『讯飞AI大学堂』公众号,发送 python100 即可领取Python基础实战100例源代码
    计算11-20 - 图8 更新于: 12/28/2021, 7:43:14 AM

    #第17期—奖金计算

    Python是一门需要不断实践练习的编程语言,本文档将AI大学堂学员交流群的Python每周练习进行汇总,希望各位小伙伴能够多进行实践练习,逐渐爱上这门神奇的编程语言,掌握它并在生活中能够使用它。

    #1 问题描述

    企业发放的奖金根据利润提成。
    利润低于或等于10万元时,奖金可提10%;
    利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;
    20万到40万之间时,高于20万元的部分,可提成5%;
    40万到60万之间时高于40万元的部分,可提成3%;
    60万到100万之间时,高于60万元的部分,可提成1.5%,
    高于100万元时,超过100万元的部分按1%提成
    级数 利润 奖金提成比例
    1 不超过10万元 10%
    2 超过10万元至20万元的部分 7.5%
    3 超过20万元至40万元的部分 5%
    4 超过40万元至60万元的部分 3%
    5 超过60万元至100万元的部分 1.5%
    6 超过100万元的部分 1%
    输入利润,求应发放奖金总数~

    #2 解题思路

    • 首先用input函数获取用户输入的利润总额
    • 然后根据奖金提成比例计算奖金
    • 最后输出计算结果

    #3 解题方法

    #方法一

    1. profit = float(input("请输入利润,单位为万元:"))
    2. assert profit >= 0, "请输入非负数!"
    3. if profit <= 10:
    4. bonus = profit * 0.1
    5. elif 10 < profit <= 20:
    6. bonus = 10 * 0.1 + (profit-10) * 0.075
    7. elif 20 < profit <= 40:
    8. bonus = 10 * 0.1 + 10 * 0.075 + (profit-20) * 0.05
    9. elif 40 < profit <= 60:
    10. bonus = 10 * 0.1+ 10 * 0.075 + 20 * 0.05 + (profit-40) * 0.03
    11. elif 60 < profit <= 100:
    12. bonus = 10 * 0.1+ 10 * 0.075 + 20 * 0.05 + 20 * 0.03 + (profit-60) * 0.015
    13. else:
    14. bonus = 10 * 0.1 + 10 * 0.075 + 20 * 0.05 + 20 * 0.03 + 40 * 0.015 + (profit-100) * 0.01
    15. print(f"奖金为{bonus:0.2f}万元")
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17

    第1行: 用input函数获取用户输入的利润总额,float函数转化为浮点数,赋值给变量profit
    第2行: 用assert断言函数限定变量profit大于0,若大于0,执行后面的代码,否则报错“AssertionError: 请输入非负数!”
    第4-15行: 用if…elif…else语句对用户输入的利润总额进行判断,根据奖金提成比例计算奖金
    第17行: print函数输出最终计算结果,保留两位小数

    #方法二

    1. profit = float(input("请输入利润,单位为万元:"))
    2. assert profit >= 0, "请输入非负数!"
    3. bonus = 0
    4. value = [100, 60, 40, 20, 10, 0]
    5. rates = [0.01, 0.015, 0.03, 0.05, 0.075, 0.1]
    6. for i in range(6):
    7. if profit > value[i]:
    8. temp = (profit - value[i]) * rates[i]
    9. bonus += temp
    10. profit = value[i]
    11. print(f"奖金为{bonus:0.2f}万元")
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    第1行: 用input函数获取用户输入的利润总额,float函数转化为整型,赋值给变量profit
    第2行: 用assert断言函数限定变量profit大于0,若大于0,执行后面的代码,否则报错“AssertionError: 请输入非负数!”
    第4行: 创建存储奖金总额的变量bonus,初始赋值为0
    第5行: 创建列表value,传入的参数为利润的界限值
    第6行: 创建列表rates, 传入的参数为对应的奖金提成比例
    第7行: 由于列表value共有6个参数,即利润总额划分为6个档位,用for循环遍历value这一列表中每一个元素的索引值
    第8行: 当用户输入的利润总额大于列表value中的利润值时,进入循环
    第9行: 通过列表的索引,计算每一个档位的奖金
    第10行: 在每次循环中,每个档位的奖金temp与变量bonus相加,并将求和结果再赋值给变量bonus
    第11行: 为变量 profit 赋值为value[i],直到变量 profit不满足条件,退出循环
    第12行: print函数输出最终计算结果,保留两位小数

    以利润 105 万为例
    第一次循环,i = 0,
    temp = (105 - 100) 0.01 = 5 0.01
    bomus = 0 + 5 0.01
    profit = 100
    第二次循环,i = 1,
    temp = (100 - 60)
    0.015 = 40 0.015
    bomus = 0 + 5 0.01 + 40 0.015
    profit = 60
    第三次循环,i = 2,
    temp = (60 - 40)
    0.03= 20 0.03
    bomus = 0 + 5 0.01 + 40 0.015 + 20 0.03
    profit = 40
    第四次循环,i = 3,
    temp = (40 - 20) 0.05= 20 0.05
    bomus = 0 + 5 0.01 + 40 0.015 + 20 0.03 + 20 0.05
    profit = 20
    第五次循环,i = 4,
    temp = (20 - 10) 0.075= 10 0.075
    bomus = 0 + 5 0.01 + 40 0.015 + 20 0.03 + 20 0.05 + 10 0.075
    profit = 10
    第六次循环,i = 5,
    temp = (10 - 0)
    0.1= 10 0.1
    bomus = 0 + 5 0.01 + 40 0.015 + 20 0.03 + 20 0.05 + 10 0.075 + 10 * 0.1
    profit = 0
    退出循环

    #4 视频解析

    高清视频讲解,请查看AI大学堂Python基础实战100例(opens new window)
    关注『讯飞AI大学堂』公众号,发送 python100 即可领取Python基础实战100例源代码
    计算11-20 - 图9 更新于: 12/28/2021, 7:43:14 AM

    #第18期-判断素数

    Python是一门需要不断实践练习的编程语言,本文档将AI大学堂学员交流群的Python每周练习进行汇总,希望各位小伙伴能够多进行实践练习,逐渐爱上这门神奇的编程语言,掌握它并在生活中能够使用它。

    #1 问题描述

    素数又称质数(Prime number),是指只有1和它本身两个因数的自然数,如2、3、5、7、11、13等只能被 1 和该整数整除。
    质数是与合数相对立的两个概念,比1大但不是素数的数称为合数,二者构成了数论当中最基础的定义之一。
    1 和 0 既非素数也非合数。
    用户输入一个大于1的正整数,判断它是否为素数~

    #2 解题思路

    • 首先用input函数获取用户输入的数字
    • 然后根据素数的定义和特点,判断该数值是否为素数
    • 最后输出判断结果

    #3 解题方法

    #方法一

    1. num = int(input("请输入一个大于1的整数:"))
    2. if num > 1:
    3. for i in range(2, num):
    4. if num % i == 0:
    5. print(f"{num}不是素数")
    6. break
    7. else:
    8. print(f"{num}是素数")
    9. else:
    10. print("输入错误,输入大于1的整数")
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

    第1行: 用input函数获取用户输入的数值,int函数将其转化为整型,赋值给变量num
    第2行: 由于素数是大于 1 的整数,用if…else语句对用户输入的数值进行判断,当该数值大于 1 时,继续判断是否为素数,否则转到第 9 行,用print函数打印 “输入错误,输入大于1的整数”
    第3-6行: 用for循环遍历 2 至(num - 1)之间所有的数,由于素数只能被 1 和该整数整除,如果用户输入的数值能被 2 至(num - 1)之间的任意一个数整除,则不是素数,用break退出整个循环
    第7-8行: 否则用print函数打印该数值是素数

    #方法二

    1. num = int(input("请输入一个大于1的整数:"))
    2. if num > 1:
    3. for i in range(2, int(num ** 0.5 + 1)):
    4. if num % i == 0:
    5. print(f"{num}不是素数")
    6. break
    7. else:
    8. print(f"{num}是素数")
    9. else:
    10. print("输入错误,输入大于1的整数")
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

    第1行: 用input函数获取用户输入的数值,int函数将其转化为整型,赋值给变量num
    第2行: 由于素数是大于 1 的整数,用if…else语句对用户输入的数值进行判断,当该数值大于 1 时,继续判断是否为素数,否则转到第 9 行,用print函数打印 “输入错误,输入大于1的整数”
    第3-6行: 用for循环遍历 2 至根号n 之间所有的数,如果用户输入的数值能被 2 至根号n 之间的任意一个数整除,则不是素数,用break退出整个循环
    第7-8行: 否则用print函数打印该数值是素数

    为什么判定一个素数只要将此数被2 至根号n 整除即可???
    设n为合数,n=ab
    若a = b, 则a 和 b 都等于根号n
    若a ≠ b,则 a, b 之中总有一个小于根号n ,另一个大于根号n


    也就是说合数有大于根号n的因数存在,则必有一个小于根号n 的因数与之对应。
    再换个说法,如果一个数没有小于根号n 的因数,则不能有大于根号n 的因数。
    所以只检查是否有小于或等于根号n 的因数即可

    #方法三

    1. num = int(input("请输入一个大于1的整数:"))
    2. if num > 1:
    3. if num == 2:
    4. print(f"{num}是素数")
    5. elif num % 2 == 0:
    6. print(f"{num}不是素数")
    7. else:
    8. for i in range(3, int(num ** 0.5) + 1, 2):
    9. if num % i == 0:
    10. print(f"{num}不是素数")
    11. break
    12. else:
    13. print(f"{num}是素数")
    14. else:
    15. print("输入错误,输入大于1的整数")
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15

    第1行: 用input函数获取用户输入的数值,int函数将其转化为整型,赋值给变量num
    第2行: 由于素数是大于 1 的整数,用if…else语句对用户输入的数值进行判断,当该数值大于 1 时,继续判断是否为素数,否则转到第 14 行,用print函数打印 “输入错误,输入大于1的整数”
    第3-4行: 若该数值等于2,则打印该数是素数
    第5-6行: 偶数中除了2都不是质数,且奇数的因数也没有偶数,所以若该数值能被2整除,则打印该数不是素数
    第7-13行: 用for循环遍历 3 至根号n 之间所有的数,如果用户输入的数值能被3 至根号n 之间的任意奇数整除,则不是素数,用break退出整个循环;否则用print函数打印该数值是素数

    #4 视频解析

    高清视频讲解,请查看AI大学堂Python基础实战100例(opens new window)
    关注『讯飞AI大学堂』公众号,发送 python100 即可领取Python基础实战100例源代码
    计算11-20 - 图10 更新于: 12/28/2021, 7:43:14 AM

    #第19期—百钱百鸡

    Python是一门需要不断实践练习的编程语言,本文档将AI大学堂学员交流群的Python每周练习进行汇总,希望各位小伙伴能够多进行实践练习,逐渐爱上这门神奇的编程语言,掌握它并在生活中能够使用它。

    #1 问题描述

    我国古代数学家张丘建在《算经》一书中提出了著名的“百钱买百鸡问题”:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何? 意思是:公鸡一只5元,母鸡一只3元,小鸡3只1元。如何用100元买100只鸡,其中公鸡,母鸡,小鸡的数量各是多少?

    #2 解题思路

    • 假设公鸡、母鸡、小鸡的数量分别为X,Y,Z,所以X、Y、Z都大于或等于零
    • 根据公鸡、母鸡、小鸡的数量关系和价格关系判断其数量,可用for循环遍历每种鸡的数量,计算结果
    • 输出正确结果

    #3 解题方法

    #方法一:枚举法

    1. n = 0
    2. for x in range(21):
    3. for y in range(34):
    4. z = 100 - x - y
    5. if 5 * x + 3 * y + z / 3 == 100:
    6. print(f'公鸡{x}只,母鸡{y}只,小鸡{z}只')
    7. n += 1
    8. print(f'一共有{n}种买法')
    1
    2
    3
    4
    5
    6
    7
    8

    第1行: 创建变量 n, 用来存储购买的方法数,初始赋值为 0
    第2行: 变量 x 表示公鸡的数量,如果用100元全部购买公鸡,最多可购买20只,用for循环遍历公鸡的数量
    第3行: 变量 y 表示母鸡的数量,如果用100元全部购买母鸡,最多可购买33只,用for循环遍历母鸡的数量
    第4行: 变量 z 表示小鸡的数量,三种鸡的数量共100只,所以 z = 100 - x - y
    第5-6行: 每只公鸡5元,每只母鸡3元,每只小鸡 1/3 元,用 if 语句判断,若购买三种鸡花费的总额为100,则用print函数输出每种鸡的数量
    第7行: 变量 n 在每次循环后都在原有的基础上加 1
    第8行: 用print函数输出共有多少种购买方法

    #方法二:公式推导法

    1. n = 0
    2. for x in range(0, 14, 4):
    3. y = 25 - 7 * x / 4
    4. z = 100 - x - y
    5. if 5 * x + 3 * y + z / 3 == 100:
    6. print(f'公鸡{x}只,母鸡{y}只,小鸡{z}只')
    7. n += 1
    8. print(f'一共有{n}种买法')
    1
    2
    3
    4
    5
    6
    7
    8

    第1行: 创建变量 n, 用来存储购买的方法数,初始赋值为 0
    第2行: 变量 x 表示公鸡的数量,根据公鸡和母鸡的数量关系推导,可知公鸡 x 的取值范围是 0 到 14,由于 x 是4的倍数,所以range函数步长为4
    第3行: 变量 y 表示母鸡的数量,根据公鸡和母鸡的数量关系推导,可知y = 25 - 7/4 x
    第4行: 变量 z 表示小鸡的数量,三种鸡的数量共100只,所以 z = 100 - x - y
    第5-6行: 每只公鸡5元,每只母鸡3元,每只小鸡 1/3 元,用 if 语句判断,若购买三种鸡花费的总额为100,则用print函数输出每种鸡的数量
    第7行: 变量 n 在每次循环后都在原有的基础上加 1
    第8行: 用print函数输出共有多少种购买方法

    公鸡和母鸡的数量关系推导:
    方程组两边同时乘 3 再相减可得:
    带入方程组可得:
    两边同时除以8,可得公鸡和母鸡的数量关系:
    由于 x, y 是正整数,所以可知以下三条结论:
    • x 是4的倍数
    • 0<=7/4x <= 25, 即 0 <= x <= 14
    • y = 25 - 7/4 x

    #4 视频解析

    高清视频讲解,请查看AI大学堂Python基础实战100例(opens new window)
    关注『讯飞AI大学堂』公众号,发送 python100 即可领取Python基础实战100例源代码
    计算11-20 - 图11 更新于: 12/28/2021, 7:43:14 AM

    #第20期-分数序列求和

    Python是一门需要不断实践练习的编程语言,本文档将AI大学堂学员交流群的Python每周练习进行汇总,希望各位小伙伴能够多进行实践练习,逐渐爱上这门神奇的编程语言,掌握它并在生活中能够使用它。

    #1 问题描述

    有一分数序列:
    求出这个数列的前20项之和~

    #2 解题思路

    从整体看,该序列的分子等于前一项的分子与分母之和;分母等于前一项的分子
    该序列的分子为:2、3、5、8、13、21…,每一项数值为前两项之和
    该序列的分母为:1、2、3、5、8、13…,每一项数值为前两项之和
    该序列分子和分母的特征与斐波那契数列非常相似,我们可以用求解斐波那契数列的方法求该数列前20项之和~
    关于如何求解斐波那契数列,大家可以查看第7期-斐波那契数列(opens new window)的练习讲解 斐波那契数列指的是这样一个数列:
    1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 ……
    这个数列从第3项开始,每一项都等于前两项之和

    #3 解题方法

    #方法一:递归法

    1. def f(x):
    2. if x == 1 or x == 2:
    3. return x
    4. return f(x - 1) + f(x - 2)
    5. sum1 = 0
    6. for i in range(1, 21):
    7. sum1 += f(i + 1) / f(i)
    8. print(round(sum1, 2))
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

    第1行: 定义函数 f, 传入参数 x
    第2-3行: 设置递归算法的结束条件,当 x 等于 1 或 2 时,返回值为 x 本身
    第4行: 否则,根据该序列分子和分母的特点,返回值为每一项数值的前两项之和
    第7行: 创建变量sum1, 用于存储该序列最终的求和结果,初始赋值为 0
    第8行: 求该序列前20项之和,需循环20次,用for循环控制循环次数
    第9行: 该序列每一项可表示为 f(i + 1) / f(i) ,在每次循环中,将该序列的每一项与变量 sum1 相加,并将求和结果再赋值给sum1,这样当for循环结束时,sum1的值就是求和结果
    第10行: 最后用print函数输出计算结果,round函数保留两位小数

    #方法二:for循环

    1. a = 2
    2. b = 1
    3. sum1 = 0
    4. for i in range(20):
    5. sum1 += a / b
    6. b, a = a, a + b
    7. print(round(sum1, 2))
    1
    2
    3
    4
    5
    6
    7

    第1行: 创建变量 a, 用来表示该序列的分子,初始赋值为 2
    第2行: 创建变量 b, 用来表示该序列的分母,初始赋值为 1
    第3行: 创建变量sum1, 用于存储该序列最终的求和结果,初始赋值为 0
    第4行: 用for循环控制循环次数
    第5行: 该序列每一项可表示为 a / b ,在每次循环中,将该序列的每一项与变量 sum1 相加,并将求和结果再赋值给sum1
    第6行: 该序列的分子等于前一项的分子与分母之和,分母等于前一项的分子,即b, a = a, a + b
    第7行: 最后用print函数输出计算结果,round函数保留两位小数

    在b, a = a, a + b这个式子中,右边的表达式会在赋值变动之前执行,即先执行 ‘=’ 等号右边的表达式,再进行赋值
    第1次循环,sum1 = 0 + 2 / 1, a + b = 3; 执行赋值后,b = 2, a = 3
    第2次循环,sum1 = 0 + 2 / 1+3 / 2, a + b = 5; 执行赋值后,b = 3, a = 5
    第3次循环,sum1 = 0 + 2 / 1+3 / 2 + 5 / 3, a + b = 8; 执行赋值后,b = 5, a = 8
    以此类推,可计算出该序列前20项和

    #4 视频解析

    高清视频讲解,请查看AI大学堂Python基础实战100例(opens new window)
    关注『讯飞AI大学堂』公众号,发送 python100 即可领取Python基础实战100例源代码
    计算11-20 - 图12 更新于: 12/28/2021, 7:43:14 AM