python3 将阶乘改成函数形式进行调用的操作

定义一个函数,求一个数的阶乘,比如求5!

#方法1,递归

def jc(num):
  if num==1:
    return 1
  else:
    return num*jc(num-1)
print(jc(5)) #返回120

# 方法2 ,for遍历

def func(num):
  '求一个数字的阶乘,例如5!'
  sum=1
  for i in range(1,num+1):
    sum=sum*i #可以简化sum*=i
  return sum
func(5)
print(func(5))#返回120

# 方法3,lambda表达式写

#lambda不能调用数组,如列表。

# 这里需要借助一个函数去做(这个函数调用了lambda表达式作为参数,即需要使用高阶函数reduce#使用高阶函数,需要调用一个模块# 将阶乘改成函数形式进行调用functools

from functools import reduce
print(reduce(lambda x,y:x*y,range(1,6)))

补充:Python极少代码实现阶乘函数

from functools import reduce
def my_factorial(x):
  if x < 0:
    raise ValueError('参数不能为负数')
  return reduce(lambda x, y: x*y, range(1, x+1)) if x != 0 else 1

运行结果:

>>> for i in range(10):
...   print(my_factorial(i), end=' ')
>>> 1 1 2 6 24 120 720 5040 40320 362880

用好lambda、reduce、filter、map等可以很方便地定义函数。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。

(0)

相关推荐

  • 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

  • Python 怎么定义计算N的阶乘的函数

    定义计算N的阶乘的函数 1)使用循环计算阶乘 def frac(n): r = 1 if n<=1: if n==0 or n==1: return 1 else: print('n 不能小于0') else: for i in range(1, n+1): r *= i return r print(frac(5)) print(frac(6)) print(frac(7)) 120 720 5040 2)使用递归计算阶乘 def frac(n): if n<=1: if n==0 or n

  • python求前n个阶乘的和实例

    我就废话不多说了,还是直接看代码吧! i = int(input("input")) sum = 0 if i<1: exit() else: while i>0: b = 2 c = 1 while b<=i: c=b*c b=b+1 sum += c i = i-1 # print(c) print(sum) 补充知识:python 利用递归方法求解n的阶乘和 写程序算出n的阶乘的和 def fn(x): if x==1: return 1 def f(x): i

  • python递归函数求n的阶乘,优缺点及递归次数设置方式

    递归函数两大特点: 1.能够调用函数自身 2.至少有一个出口(结束函数自身调用) 函数实现: def calnum(num): if num != 1: # 递归调用自身函数 csum = num * calnum(num - 1) else: # 设置递归出口 csum = 1 return csum ret = calnum(5) print(ret) 递归函数的缺点: 占用资源多,一般不会优先选择. 一个程序中python默认只允许调用自身1024次,超过这个次数, python解释器会认

  • Python3 实现递归求阶乘

    题目 利用递归方法求5! 程序分析 递归调用即可. def factorial(n): return n*factorial(n-1) if n>1 else 1 print(factorial(5)) 补充:python 求N的阶乘 本题要求编写程序,计算N的阶乘 输入格式: 输入在一行中给出一个正整数 N. 输出格式: 在一行中按照"product = F"的格式输出阶乘的值F,请注意等号的左右各有一个空格.题目保证计算结果不超过双精度范围. 输入样例: 5 输出样例: pr

  • python3 将阶乘改成函数形式进行调用的操作

    定义一个函数,求一个数的阶乘,比如求5! #方法1,递归 def jc(num): if num==1: return 1 else: return num*jc(num-1) print(jc(5)) #返回120 # 方法2 ,for遍历 def func(num): '求一个数字的阶乘,例如5!' sum=1 for i in range(1,num+1): sum=sum*i #可以简化sum*=i return sum func(5) print(func(5))#返回120 # 方法

  • 把JavaScript代码改成ES6语法不完全指南(分享)

    目录 * 核心例子 * 修改成静态变量(const)或块级变量(let) * 开始修改 * 疑问解释(重复定义会发生什么) * 疑问解释(let的块级作用域是怎样的) * 疑问解释(const定义的变量在基础数据类型和引用类型中的差异) * 修改成Promise的形式 * 预备知识(回调函数是什么) * 预备知识(如何把回调函数改为Promise) * 开始修改 * 修改成箭头函数(Arrow Function) * 预备知识(箭头函数是什么) * 预备知识(箭头函数函数中的this是个坑) *

  • SQLids.vbs 0.7(最终版,以后改成gui界面的)

    是有这个问题的.第一,应当用正则判断较好.第二,我用循环加返回结果大于30个长度就退出循环,我相信没有表名和字段名大于30个字母的,但是字段值有可能大于,这个地方解决的不够好.但是一般是用来查后台的管理员的用户名和密码,所以就放弃了. 复制代码 代码如下: set arg=wscript.arguments If (LCase(Right(Wscript.fullname,11))="Wscript.Exe") Then Wscript.Quit End If if arg.count

  • 将HTML的左右尖括号等转义成实体形式的两种实现方式

    前端开发工作中,经常需要将HTML的左右尖括号等转义成实体形式.我们不能把<,>,&等直接显示在最终看到的网页里.需要将其转义后才能在网页上显示. 转义字符(Escape Sequence)也称字符实体(Character Entity).定义转义字符串的主要原因是 "<"和">"等符号已经用来表示HTML TAG,因此不能直接当作文本中的符号来使用.但有时需求是在HTML页面上使用这些符号,所以需要定义它的转义字符串. 有些字符在A

  • 浅谈python3打包与拆包在函数的应用详解

    1.序列(拆包) *用作序列拆包:*可对字符串.列表.集合.元组.字典.数字元素等序列进行拆包 print(*(1,2,3,4,5,6)) #1 2 3 4 5 6 print(*[1,2,3,4,5,6]) #1 2 3 4 5 6 序列拆包赋值: 注意:*变量 不能在第一个位置,否则会报错 a, b, *c = 0, 1, 2, 3 #获取剩余部分 a, *b, c = 0, 1, 2, 3 #获取中间部分 a, b, *c = 0, 1 a, *b, c = 0, 1 优先对位置变量赋值,

  • django 将自带的数据库sqlite3改成mysql实例

    在settings.py中将默认内容覆盖成 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'wechat', 'USER':'root', 'PASSWORD':'123456', 'HOST':'127.0.0.1', 'PORT':'3306', } } 然后 msql -u root -p 输入密码 create database wechat default charset=utf8; 补

  • Python3的urllib.parse常用函数小结(urlencode,quote,quote_plus,unquote,unquote_plus等)

    本文实例讲述了Python3的urllib.parse常用函数.分享给大家供大家参考,具体如下: 1.获取url参数 >>> from urllib import parse >>> url = r'https://docs.python.org/3.5/search.html?q=parse&check_keywords=yes&area=default' >>> parseResult = parse.urlparse(url) &

  • 将php默认的FastCGI模式改成ISAPI模式

    一,下载PHP的ZIP文件包:http://7i24.com/system/dl/,也可以去www.php.net中下载.注意版本要对应. 二,将sapi目录中的:php4isapi.dll复制到c:\php目录中 三,进入虚拟主机管理平台的"网站管理"-"虚拟主机"--服务器设置中,修改PHP的影射,将原来的: .php,C:\PHP\php.exe,5,GET,HEAD,POST,TRACE| 改成: .php,C:\PHP\php4isapi.dll,5,GE

  • 人民币数字转换成大写形式

    运用了正则表达式的功能,除了可以正确的转换成人民币的大写形式以外,还可以判断输入的形式是否正确有效. 将人民币数字转换成大写形式 function convertCurrency(currencyDigits) { // Constants: var MAXIMUM_NUMBER = 99999999999.99; // Predefine the radix characters and currency symbols for output: var CN_ZERO = "零";

  • iOS9苹果将原http协议改成了https协议的方法

    解决方法: 在info.plist 加入key <key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict> 下面给大家介绍ios中http 和https 协议的访问 最近做个项目,开始采用的是HTTP协议实现客户端和服务器端的交互,后来需要改成HTTPS协议.在修改的过程中发现了一些问题,解决方案如下:

随机推荐