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

目录
  • 前言
  • 1、前N阶乘求和
    • 1.1 图解问题
    • 1.2 算法流程
    • 1.3 代码实现
    • 1.4实验小结
  • 2、金字塔数求和运算
    • 2.1 图解问题
    • 2.2 算法流程
    • 2.3 代码实现
    • 2.4 实验小结
  • 总结

前言

此专栏为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金字塔数求和的资料请关注我们其它相关文章!

(0)

相关推荐

  • Python实现分数序列求和

    我就废话不多说了,直接上代码吧! #!/usr/bin/env python # coding:UTF-8 """ @version: python3.x @author:曹新健 @contact: 617349013@qq.com @software: PyCharm @file: 1223.py @time: 2018/12/23 20:56 """ ''' 有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列

  • R语言 实现data.frame 分组计数、求和等

    df为1个data.frame对象,有stratum和psu两列,这里统计stratum列计数 方法1: cnt = table(df$stratum) 方法2: cnt = tapply(df$psu, INDEX=df$stratum, FUN=length) 在方法2的基础上,只要改变FUN函数就可以实现分组求和.求均值等功能,如下 分组求均值: tapply(df$psu, INDEX=df$stratum, FUN=mean) #(等价于python中的df.groupby('stra

  • python 用for循环实现1~n求和的实例

    用for循环实现1~n求和的方法 def main(): sum = 0 n = int(input('n=')) for x in range(n): sum += (x + 1) print(sum) if __name__ == '__main__': main() 以上这篇python 用for循环实现1~n求和的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

  • Python阶乘求和的代码详解

    Python阶乘求和的方法 题目描述: 获得用户输入的整数n,输出 1!+2!+-+n!的值. 如果输入数值为0.负数.非数字或非整数,输出提示信息:输入有误,请输入正整数. 方法一: #factTest1 def main(): a = input() sum = 0 if a.isdigit(): n = eval(a) if n > 0: fact = 1 for i in range(1, n+1): fact *= i sum += fact print(sum) else: prin

  • Python3数字求和的实例

    以下实例为通过用户输入两个数字,并计算两个数字之和: # -*- coding: UTF-8 -*- # Filename : test.py # author by : www.runoob.com # 用户输入数字 num1 = input('输入第一个数字:') num2 = input('输入第二个数字:') # 求和 sum = float(num1) + float(num2) # 显示计算结果 print('数字 {0} 和 {1} 相加结果为: {2}'.format(num1,

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

    目录 前言 1.前N阶乘求和 1.1 图解问题 1.2 算法流程 1.3 代码实现 1.4实验小结 2.金字塔数求和运算 2.1 图解问题 2.2 算法流程 2.3 代码实现 2.4 实验小结 总结 前言 此专栏为python与R语言对比学习的文章:以通俗易懂的小实验,带领大家深入浅出的理解两种语言的基本语法,并用以实际场景!感谢大家的关注,希望对大家有所帮助. “博观而约取,厚积而薄发!”谨以此言,望诸君共勉 本文将前两个小实验整理拼凑再了一起 :分别是“前N阶乘求和.金字塔数求和”.具体的项

  • 利用python/R语言绘制圣诞树实例代码

    目录 Python R语言 总结 圣诞节快到了,想着用python.r来画画圣诞树玩,就在网络上各种找方法,不喜勿喷哈~~ Python 1. import turtle screen = turtle.Screen() screen.setup(800,600) circle = turtle.Turtle() circle.shape('circle') circle.color('red') circle.speed('fastest') circle.up() square = turt

  • Python/R语言分别实现斐波那契数列的示例详解

    目录 前言 1.年龄计算 1.1 图解问题 1.2 代码解决 1.3 实验小结 2.斐波那契数列 2.1 图解问题 2.2 代码实现 2.3 实验小结 总结 前言 此专栏为python与R语言对比学习的文章:以通俗易懂的小实验,带领大家深入浅出的理解两种语言的基本语法,并用以实际场景!感谢大家的关注,希望对大家有所帮助. “博观而约取,厚积而薄发!”谨以此言,望诸君共勉 本文将前两个小实验整理拼凑再了一起 :分别是“年龄计算”.“斐波那契数列”.具体的项目介绍见下文. 1.年龄计算 有 5 个人

  • 如何利用Python快速统计文本的行数

    ​​通常我们会用wc -l来统计文件行数,不过用Python统计也很简单. 要快速统计一个文本文件中的行数,其实就是要统计这个文本文件中换行符的个数.为了尽量提高速度,我们需要尽量多读一些文本然后一起处理.统计换行符的个数可以用bytes内置的count方法. 代码如下: from __future__ import print_function import time if __name__ == '__main__': import sys start = time.time() with

  • 利用Python的装饰器解决Bottle框架中用户验证问题

    首先来分析下需求,web程序后台需要认证,后台页面包含多个页面,最普通的方法就是为每个url添加认证,但是这样就需要每个每个绑定url的后台函数都需要添加类似或者相同的代码,但是这样做代码就过度冗余,而且不利于扩展. 接下来我们先不谈及装饰器,我们都知道Python是个很强大的语言,她可以将函数当做参数传递给函数,最简单的: def p(): print 'Hello,world' def funcfactor(func): print 'calling function named', fun

  • Python与C语言分别解决完全平方数问题

    1 案例 一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? 2 分析 由题意我们可以设该数为x ,加100后得到的完全平方数为再加168后得到的完全平方数为. 则: 得: 可以利用的条件: 3 Python实现 (1)方法一: 假设这个数字是:x条件一:x+100是一个完全平方数条件二:x+100+168也是一个完全平方数 import math for i in range(-100,2000): if (int(math.sqrt(i+100)))*

  • 利用python求相邻数的方法示例

    前言 本文主要给大家介绍了关于利用python求相邻数的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍: 什么是相邻数? 比如5,相邻数为4和6,和5相差1的数,连续相差为1的一组数 需求: 遍历inputList 所有数字,取出所有数字,判断是否有相邻数, 不相邻数字 和 相邻数字 都以 "数组"形式 添加到 outputList 中, 并且 每个"数组" 里 第一位 递减 补全两位数,末位 递增 补全两位数, 每一个数不能小于0, 不能大

  • R语言利用loess如何去除某个变量对数据的影响详解

    R语言介绍 R语言是用于统计分析,图形表示和报告的编程语言和软件环境. R语言由Ross Ihaka和Robert Gentleman在新西兰奥克兰大学创建,目前由R语言开发核心团队开发. R语言的核心是解释计算机语言,其允许分支和循环以及使用函数的模块化编程. R语言允许与以C,C ++,.Net,Python或FORTRAN语言编写的过程集成以提高效率. R语言在GNU通用公共许可证下免费提供,并为各种操作系统(如Linux,Windows和Mac)提供预编译的二进制版本. R是一个在GNU

  • 利用Python来实现阿姆斯特朗数的检查实例

    一.什么是阿姆斯特朗数? 如果一个正整数等于其各个数字的立方和,则称该数为阿姆斯特朗数(亦称为自恋性数). 一个正整数称为阿姆斯特朗阶数. 例: abcd... = an + bn + cn + dn + ... 如果是3位的阿姆斯特朗数字,则每个数字的立方和等于该数字本身. 例如: 153 = 1*1*1 + 5*5*5 + 3*3*3 // 153是一个阿姆斯特朗数. 二.案例 1. 检查阿姆斯特朗数(3位数字) 例 : # 检查该数字是否为阿姆斯壮数字的Python程序 # 接受用户的输入

  • R语言 解决无法打开链结的问题

    近期,在项目中遇到一个棘手的问题. R脚本在centos服务器上通过"R --no-save filename.R"的方式运行R脚本可以成功,分析结果也可以存入MySQL,该种方式适合算法工程师测试脚本使用. 但是,同样的脚本,在Java后台调用时却失败了. 为了定位问题位置,在脚本内插入很多打印语句,锁定了问题出现在利用RMySQL包将分析结果存入数据库部分,由于Java调用R脚本时R报错信息无法获取,因此又在R脚本中抓取了try函数的执行结果,并存储于自建的R运行日志中. 查看日志

随机推荐