【10月更文挑战第13天】「Mac上学Python 24」小学奥数篇10 - 数列求和

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
实时计算 Flink 版,5000CU*H 3个月
简介: 本篇将通过 Python 和 Cangjie 双语实现数列求和的计算。通过这个题目,学生将学会如何通过公式法和循环法求解等差数列与等比数列的和。

本篇将通过 PythonCangjie 双语实现数列求和的计算。通过这个题目,学生将学会如何通过公式法循环法求解等差数列与等比数列的和。

sequencesequence.png


关键词
  • 小学奥数
  • Python + Cangjie
  • 数列求和

一、题目描述

编写一个程序,计算等差数列和等比数列的和。用户输入首项公差/公比以及项数,程序将分别输出等差数列等比数列的和。

  • 等差数列和公式S = n * (a1 + an) / 2
    其中,a1 是首项,an = a1 + (n - 1) * d 是末项,n 为项数。
  • 等比数列和公式S = a1 * (1 - r^n) / (1 - r)(当 r ≠ 1

二、Python 实现

# 接收用户输入
a1 = float(input("请输入首项 a1: "))  # 输入首项
d = float(input("请输入公差 d: "))    # 输入等差数列的公差
r = float(input("请输入公比 r: "))    # 输入等比数列的公比
n = int(input("请输入项数 n: "))      # 输入项数

# 计算等差数列的和
an = a1 + (n - 1) * d  # 根据公式计算等差数列的末项
arithmetic_sum = n * (a1 + an) / 2  # 等差数列求和公式

# 计算等比数列的和
if r == 1:
    geometric_sum = n * a1  # 当公比为1时的求和公式
else:
    geometric_sum = a1 * (1 - r ** n) / (1 - r)  # 一般情况下的等比数列求和

# 输出结果,保留两位小数
print(f"等差数列的和: {arithmetic_sum:.2f}")
print(f"等比数列的和: {geometric_sum:.2f}")

三、Cangjie 实现

package cjcDemo

import std.convert.*    // 导入数据转换模块
import std.console.*    // 导入控制台输入输出模块
import std.format.*     // 导入格式化模块
import std.math.*       // 导入数学模块

// 定义函数接收并转换用户输入为 Int64
func inputInt(info: String): Int64 {
    print(info)  // 输出提示信息
    let number: Int64 = Int64.parse(Console.stdIn.readln().getOrThrow())  // 读取并转换输入
    return number
}

// 定义函数接收并转换用户输入为 Float64
func inputFloat(info: String): Float64 {
    print(info)  // 输出提示信息
    let number: Float64 = Float64.parse(Console.stdIn.readln().getOrThrow())  // 读取并转换输入
    return number
}

main(): Int64 {
    // 接收用户输入的首项、公差、公比和项数
    let a1 = inputFloat("请输入首项 a1: ")
    let d = inputFloat("请输入公差 d: ")
    let r = inputFloat("请输入公比 r: ")
    let n = inputInt("请输入项数 n: ")

    // 计算等差数列的末项和总和
    let an = a1 + Float64(n - 1) * d
    let arithmetic_sum = Float64(n) * (a1 + an) / 2.0

    // 根据公比是否为1计算等比数列的和
    let geometric_sum = if (r == 1.0) {
        Float64(n) * a1
    } else {
        a1 * (1.0 - pow(r, n)) / (1.0 - r)
    }

    // 输出结果,保留两位小数
    println("等差数列的和: ${arithmetic_sum.format("0.2")}")
    println("等比数列的和: ${geometric_sum.format("0.2")}")

    return 0
}

四、图形展示(扩展部分)

以下代码使用 Python 生成数列求和的可视化图形。本部分是进阶扩展内容,当前阶段不要求理解

from PIL import Image, ImageDraw, ImageFont

# 创建画布
img = Image.new('RGB', (600, 300), color='white')
draw = ImageDraw.Draw(img)
font = ImageFont.load_default()

# 绘制数列求和的结果
draw.text((10, 10), "等差数列的和: 25.00", fill="black", font=font)
draw.text((10, 50), "等比数列的和: 121.00", fill="black", font=font)

# 保存图像
img_path = "sequence_sum.png"
img.save(img_path)
print(f"图形已保存为 {img_path}")

生成的图像如下:
sequence_sum.pngsequence_sum.png


五、示例执行

示例 1

输入:
首项 a1: 1
公差 d: 2
公比 r: 3
项数 n: 5
输出:
等差数列的和: 25.00
等比数列的和: 121.00

示例 2

输入:
首项 a1: 2
公差 d: 0
公比 r: 1
项数 n: 4
输出:
等差数列的和: 8.00
等比数列的和: 8.00

六、小结

通过这道数列求和的题目,学生学会了等差数列等比数列的求和公式,并掌握了如何通过编程实现数列的计算。


上一篇: 「Mac上学Python 23」小学奥数篇9 - 基础概率计算

下一篇: 「Mac上学Python 25」小学奥数篇11 - 最大公约数与最小公倍数


目录
相关文章
|
2月前
|
Java 索引 Python
【10月更文挑战第19天】「Mac上学Python 30」基础篇11 - 高级循环技巧与应用
本篇将介绍更深入的循环应用与优化方法,重点放在高级技巧和场景实践。我们将讲解enumerate()与zip()的妙用、迭代器与生成器、并发循环以及性能优化技巧。这些内容将帮助您编写更高效、结构更合理的代码。
68 5
|
2月前
|
数据安全/隐私保护 Python
【10月更文挑战第17天】「Mac上学Python 28」基础篇9 - 条件语句与逻辑判断
在Python中,条件语句和逻辑判断是控制程序执行流程的关键工具,帮助程序在不同条件下做出不同决策。通过本篇的学习,您将掌握单选、双分支、多选结构、单行条件表达式、条件嵌套、条件判断的类型和逻辑运算符的用法,从而更灵活地控制程序执行流程。
50 5
|
2月前
|
Python
【10月更文挑战第18天】「Mac上学Python 29」基础篇10 - 循环结构与迭代控制
在Python中,循环结构是控制程序执行的重要工具。通过学习本篇内容,您将掌握如何使用for循环和while循环来高效地处理重复任务,并了解break、continue和else的使用方式。同时,我们还会探索嵌套循环和典型应用场景中的实际应用。
41 2
|
2月前
|
存储 算法 Python
【10月更文挑战第16天】「Mac上学Python 27」小学奥数篇13 - 动态规划入门
本篇将通过 Python 和 Cangjie 双语介绍动态规划的基本概念,并解决一个经典问题:斐波那契数列。学生将学习如何使用动态规划优化递归计算,并掌握编程中的重要算法思想。
102 3
|
2月前
|
Python
【10月更文挑战第15天】「Mac上学Python 26」小学奥数篇12 - 图形变换与坐标计算
本篇将通过 Python 和 Cangjie 双语实现图形变换与坐标计算。这个题目帮助学生理解平面几何中的旋转、平移和对称变换,并学会用编程实现坐标变化。
66 1
|
2月前
|
算法 数据可视化 Python
【10月更文挑战第14天】「Mac上学Python 25」小学奥数篇11 - 最大公约数与最小公倍数
本篇将通过 Python 和 Cangjie 双语实现最大公约数(GCD)和最小公倍数(LCM)的计算。这个题目帮助学生理解如何运用数学算法,并将其与编程实现结合。
53 1
|
3月前
|
iOS开发 MacOS Windows
Mac air使用Boot Camp安装win10 ,拷贝 Windows 文件时出错
Mac air使用Boot Camp安装win10 ,拷贝 Windows 文件时出错
|
1月前
|
开发工具 iOS开发 开发者
「Mac畅玩鸿蒙与硬件2」鸿蒙开发环境配置篇2 - 在 Mac 上安装 DevEco Studio
本篇将专注于如何在 Mac 上安装鸿蒙开发工具 DevEco Studio,确保开发环境能够顺利搭建。完成安装后,可以正式开始鸿蒙应用的开发工作。
88 1
「Mac畅玩鸿蒙与硬件2」鸿蒙开发环境配置篇2 - 在 Mac 上安装 DevEco Studio
|
2月前
|
机器学习/深度学习 Python
【10月更文挑战第5天】「Mac上学Python 6」入门篇6 - 安装与使用Anaconda
本篇将详细介绍如何在Mac系统上安装和配置Anaconda,如何创建虚拟环境,并学习如何使用 `pip` 和 `conda` 管理Python包,直到成功运行第一个Python程序。通过本篇,您将学会如何高效地使用Anaconda创建和管理虚拟环境,并使用Python开发。
73 4
【10月更文挑战第5天】「Mac上学Python 6」入门篇6 - 安装与使用Anaconda
|
2月前
|
IDE 开发工具 iOS开发
【10月更文挑战第3天】「Mac上学Python 3」入门篇3 - 安装Python与开发环境配置
本篇将详细介绍如何在Mac系统上安装Python,并配置Python开发环境。内容涵盖Python的安装、pip包管理工具的配置与国内镜像源替换、安装与配置PyCharm开发工具,以及通过PyCharm编写并运行第一个Python程序。通过本篇的学习,用户将完成Python开发环境的搭建,为后续的Python编程工作打下基础。
192 2
【10月更文挑战第3天】「Mac上学Python 3」入门篇3 - 安装Python与开发环境配置