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

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
实时数仓Hologres,5000CU*H 100GB 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 - 最大公约数与最小公倍数


目录
相关文章
|
7天前
|
编解码 Java 程序员
写代码还有专业的编程显示器?
写代码已经十个年头了, 一直都是习惯直接用一台Mac电脑写代码 偶尔接一个显示器, 但是可能因为公司配的显示器不怎么样, 还要接转接头 搞得桌面杂乱无章,分辨率也低,感觉屏幕还是Mac自带的看着舒服
|
9天前
|
存储 缓存 关系型数据库
MySQL事务日志-Redo Log工作原理分析
事务的隔离性和原子性分别通过锁和事务日志实现,而持久性则依赖于事务日志中的`Redo Log`。在MySQL中,`Redo Log`确保已提交事务的数据能持久保存,即使系统崩溃也能通过重做日志恢复数据。其工作原理是记录数据在内存中的更改,待事务提交时写入磁盘。此外,`Redo Log`采用简单的物理日志格式和高效的顺序IO,确保快速提交。通过不同的落盘策略,可在性能和安全性之间做出权衡。
1568 10
|
1月前
|
弹性计算 人工智能 架构师
阿里云携手Altair共拓云上工业仿真新机遇
2024年9月12日,「2024 Altair 技术大会杭州站」成功召开,阿里云弹性计算产品运营与生态负责人何川,与Altair中国技术总监赵阳在会上联合发布了最新的“云上CAE一体机”。
阿里云携手Altair共拓云上工业仿真新机遇
|
12天前
|
人工智能 Rust Java
10月更文挑战赛火热启动,坚持热爱坚持创作!
开发者社区10月更文挑战,寻找热爱技术内容创作的你,欢迎来创作!
782 27
|
2天前
|
移动开发 JavaScript 前端开发
💻揭秘!如何用 Vue 3 实现酷炫的色彩魔方游戏✨
本文分享了开发基于Canvas技术的小游戏"色彩魔方挑战"的完整过程。游戏旨在考验玩家的观察力和耐心,通过随机生成的颜色矩阵和一个变化点,玩家需在两幅画布中找出不同的颜色点。文章详细讲解了游戏的核心功能,包括随机颜色矩阵生成、点的闪烁提示、自定义配色方案等。此外,作者展示了使用Vue 3和TypeScript开发的代码实现,带领读者一步步深入了解游戏的逻辑与细节。
103 68
|
2天前
|
存储 前端开发 JavaScript
🚀前端轻松实现网页内容转换:一键复制、保存图片及生成 Markdown
在现代前端开发中,提升用户的交互体验至关重要。本文将详细介绍如何使用 HTML2Canvas 和 Turndown 两个强大的 JavaScript 库,实现将网页选中文本转化为图片并保存或复制到剪贴板,或将内容转换为 Markdown 格式。文章包含核心代码实现、技术细节和功能拓展方向,为开发者提供了一个轻量级的解决方案,提升用户体验。
100 68
|
16天前
|
Linux 虚拟化 开发者
一键将CentOs的yum源更换为国内阿里yum源
一键将CentOs的yum源更换为国内阿里yum源
849 5
|
9天前
|
存储 SQL 关系型数据库
彻底搞懂InnoDB的MVCC多版本并发控制
本文详细介绍了InnoDB存储引擎中的两种并发控制方法:MVCC(多版本并发控制)和LBCC(基于锁的并发控制)。MVCC通过记录版本信息和使用快照读取机制,实现了高并发下的读写操作,而LBCC则通过加锁机制控制并发访问。文章深入探讨了MVCC的工作原理,包括插入、删除、修改流程及查询过程中的快照读取机制。通过多个案例演示了不同隔离级别下MVCC的具体表现,并解释了事务ID的分配和管理方式。最后,对比了四种隔离级别的性能特点,帮助读者理解如何根据具体需求选择合适的隔离级别以优化数据库性能。
232 4
|
2天前
|
人工智能
云端问道12期-构建基于Elasticsearch的企业级AI搜索应用陪跑班获奖名单公布啦!
云端问道12期-构建基于Elasticsearch的企业级AI搜索应用陪跑班获奖名单公布啦!
121 1
|
6天前
|
并行计算 PyTorch TensorFlow
Ubuntu安装笔记(一):安装显卡驱动、cuda/cudnn、Anaconda、Pytorch、Tensorflow、Opencv、Visdom、FFMPEG、卸载一些不必要的预装软件
这篇文章是关于如何在Ubuntu操作系统上安装显卡驱动、CUDA、CUDNN、Anaconda、PyTorch、TensorFlow、OpenCV、FFMPEG以及卸载不必要的预装软件的详细指南。
471 2