利用Python/R语言分别解决金字塔数求和问题

 更新时间:2022年03月24日 10:14:07   作者:铭记yu心  
这篇文章将通过两个小问题:前N阶乘求和问题、金字塔数求和问题,带领大家深入浅出的理解两种语言的基本语法,并用以实际场景,需要的可以参考一下

前言

此专栏为python与R语言对比学习的文章;以通俗易懂的小实验,带领大家深入浅出的理解两种语言的基本语法,并用以实际场景!感谢大家的关注,希望对大家有所帮助。

“博观而约取,厚积而薄发!”谨以此言,望诸君共勉

本文将前两个小实验整理拼凑再了一起 ;分别是“前N阶乘求和、金字塔数求和”。具体的项目介绍见下文。

1、前N阶乘求和

阶乘是基斯顿·卡曼(Christian Kramp,1760~1826)于 1808 年发明的运算符号,是数学术语。

n!=1∗2∗3∗...∗(n−1)∗n

或者可以使用递归方式定义:

对其前N项阶乘求和即是sum(1!+2!+3!+...+n!),有了以上的理论基础,我们一起看看图解,加强一下理解 !

1.1 图解问题

如图,如果要输出每一个值 ,可以嵌入循环的思想,每一次将前一个值进行乘法运算即可!

1.2 算法流程

在此可以看到 ,我们需要加以人工控制需要算前多少项。在循环体内,这是对阶乘数的累加和赋值。

1.3 代码实现

1.3.1 python代码实现

n = int(input("n = "))
s = 0
t = 1
for i in range(1,n+1):
    t*=i
    s+=t
print ("前{}阶乘的和是:{}" .format(n,s))

1.3.2 R语言代码实现

factorial <- function(n){
  n <<-  as.integer(readline("请输入需要阶乘个数(从 1 开始):"))
  fac = 1
  ans = 0
  for (i in 1:n) {
    fac = fac * i
    ans = ans + fac 
  }
  return(ans)
}
test_3 <- function(){
  print("前n阶乘之和为:")
  factorial(n)
}
test_3()

1.4实验小结

这个实验核心的点是循环的使用;

至于R代码部分均使用函数的形式进行包装方便理解;函数内部采用互动的方式,便于拓展使用。有需要了解的留言或私信。

2、金字塔数求和运算

此处的金字塔是真金字塔;就按简单的金字塔形状的数字:

求s=a+aa+aa+aaa+aa...a的值,其中 a 是一个数字。例如:

2+22+222+2222+22222

 (此时共 有 5 个数相加),几个数相加由键盘控制。

2.1 图解问题

通过对每一层金字塔数的拆解,即可得到如下的通项公式:

这样问题不久又解决了吗?与上面的前n项阶乘求和一样,使用循环求出每一层数,然后求和。

2.2 算法流程

与上面实验基本没有差异;主要是循环体的算法不同而已。此处不做讲解了。

2.3 代码实现

2.3.1 python代码

a = int(input("请输入需要a的值:"))
n = int(input("请输入需要n的值:"))

Fn = 0
pyr = []

for i in range(n):
    Fn = Fn + a
    a = a*10
    pyr.append(Fn)
    print(Fn)
print("前{}个数的和为:{}".format(n, sum(pyr)))

2.3.2 R语言代码实现

sum_pyr <- function(){
  
  a <- as.integer(readline("请输入a的值:"))
  n <- as.integer(readline("请输入n的值:"))
  
  Fn <- 0
  pyr <- c()
  
  for (i in 1:n) {
    Fn <- Fn + a
    a <- a * 10
    pyr[i] <- Fn
    print(Fn)
  }
  
  ans <<- sum(pyr)
  
}
test_4 <- function(){
  print("金字塔为:")
  sum_pyr()
  print("求和结果为:")
  ans
}
test_4()

2.4 实验小结

这个实验核心的点是循环的使用;

至于R代码部分均使用函数的形式进行包装方便理解;函数内部采用互动的方式,便于拓展使用。有需要了解的留言或私信。

总结

本文中Python与R语言语法小结

获取键盘输入值——input()函数 VS readline()函数

本文主要对for循环玩法进行了加深一步的介绍 。以及 R语言的函数体也是今后常用的结构体!

以上就是利用Python/R语言分别解决金字塔数求和问题的详细内容,更多关于Python/R金字塔数求和的资料请关注脚本之家其它相关文章!

相关文章

  • Python 实现遥感影像波段组合的示例代码

    Python 实现遥感影像波段组合的示例代码

    这篇文章主要介绍了Python 实现遥感影像波段组合的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • Python经典题实战记录之百元买百鸡

    Python经典题实战记录之百元买百鸡

    有一道著名的"百钱买百鸡"问题大家应该都不陌生,这篇文章主要给大家介绍了关于Python经典题实战记录之百元买百鸡的相关资料,文中给出了详细的代码示例,需要的朋友可以参考下
    2023-12-12
  • python+selenium select下拉选择框定位处理方法

    python+selenium select下拉选择框定位处理方法

    今天小编就为大家分享一篇python+selenium select下拉选择框定位处理方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • 谈谈Python:为什么类中的私有属性可以在外部赋值并访问

    谈谈Python:为什么类中的私有属性可以在外部赋值并访问

    这篇文章主要介绍了谈谈Python:为什么类中的私有属性可以在外部赋值并访问,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • Python实现单链表中元素的反转

    Python实现单链表中元素的反转

    这篇文章主要为大家详细介绍了Python实现单链表中元素的反转,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • python压包的概念及实例详解

    python压包的概念及实例详解

    在本篇文章里小编给大家整理的是一篇关于python压包的概念及实例详解内容,有兴趣的朋友们可以参考学习下。
    2021-02-02
  • 详解Python数据分析--Pandas知识点

    详解Python数据分析--Pandas知识点

    这篇文章主要介绍了Python数据分析--Pandas知识点,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • 使用Python读取安卓手机的屏幕分辨率方法

    使用Python读取安卓手机的屏幕分辨率方法

    下面小编就为大家分享一篇使用Python读取安卓手机的屏幕分辨率方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-03-03
  • python多线程方法详解

    python多线程方法详解

    大家好,本篇文章主要讲的是python多线程方法详解,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-01-01
  • Python入门教程之运算符重载详解

    Python入门教程之运算符重载详解

    运算符重载意味着赋予超出其预定义的操作含义的扩展含义。例如运算符 + 用于添加两个整数以及连接两个字符串和合并两个列表。本文将通过示例带大家详细了解Python的运算符重载,感兴趣的可以了解一下
    2022-09-09

最新评论