当前位置: 首页 > article >正文

「Mac玩转仓颉内测版47」小学奥数篇10 - 数列求和

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


关键词
  • 小学奥数
  • 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.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玩转仓颉内测版46」小学奥数篇9 - 基础概率计算
下一篇: 「Mac玩转仓颉内测版48」小学奥数篇11 - 最大公约数与最小公倍数

作者:SoraLuna
链接:https://www.nutpi.net/thread?topicId=394
來源:坚果派
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。



http://www.kler.cn/a/429079.html

相关文章:

  • 【ArcGIS微课1000例】0140:总览(鹰眼)、放大镜、查看器的用法
  • PTA L1-039 古风排版
  • SQL-杂记1
  • 深入了解卷积神经网络(CNN):图像处理与深度学习的革命性技术
  • 深入理解 D3.js 力导向图:原理、调参与应用
  • linux手动安装mysql5.7
  • 电脑无法识别usb设备怎么办?电脑无法识别usb解决方法
  • 基于STM32的DS18B20温度报警器_可调上下限Proteus仿真设计(仿真+程序+设计报告+讲解视频)
  • 鸿蒙ZRouter动态路由框架—服务路由
  • java+springboot+mysql游乐园管理系统
  • 重生之我在学Vue-- Vue3 学习路径总览
  • 生成SSH秘钥文件
  • Python实现ARIMA-LSTM回归模型预测股票价格项目实战
  • 深入了解架构中常见的4种缓存模式及其实现
  • Linux —— 管理文件
  • yolov10 生成json 自动标注
  • 《Python数据分析:活用pandas库》学习笔记Day1:Panda DataFrame基础知识
  • k8s集群环境时间同步
  • Ethernet 系列(10)-- 基础学习::UDP
  • 突破空间限制!从2D到3D:北大等开源Lift3D,助力精准具身智能操作!
  • 【Linux系统】Ubuntu 缓冲区机制
  • 【在Linux世界中追寻伟大的One Piece】HTTP cookie
  • NDK编译(使用Android.mk)C/C++程序和库
  • pytest(三)json数据驱动
  • flutter实现如何 检测键盘的显示和隐藏状态
  • Github 2024-12-05 Go开源项目日报 Top10