数学建模-day2

目录

一、计算1到n的p次方和 

二、可变参数

三、关键字参数

四、值传递和址传递

五.参数传递的复合数据解包

 六、

七、递归函数

八、导入模块的四种方式

1.import 模块名 [as 别名]

2.from 模块名 import 对象名 [as 别名]

3.from 模块名 import *

4.自定义模块的导入

九、快捷键


一、计算1到n的p次方和 

def square_sum(n,p=2):
    result=sum(i**p for i in range(1,n+1))
    return (n,p,result)
print('1 to %d 的 %d 次方之和为 %d'%square_sum(10,3))

二、可变参数

def add(*args):
    print(args,end='')
    s=sum(args)
    return s
print("的和为%d"%add(12,10,6,8))

(12, 10, 6, 8)的和为36

三、关键字参数

def person(name,age,**kw):
    print('name',name,'age',age,'other:',kw)
person('tom',18,gender='man',score=100)

name tom age 18 other: {'gender': 'man', 'score': 100}

四、值传递和址传递

值传递:数值,字符串等本身不可以改变的

址传递:列表等本身可变

五.参数传递的复合数据解包

def fun(a,b,c):
    print("三个数的和为",a+b+c)
sep=[1,2,3]
fun(*sep)
tup=(1,2,3)
fun(*tup)
dic={1:'a',2:'b',3:'c'}
fun(*dic)
set={1,2,3}
fun(*set)

三个数的和为 6
三个数的和为 6
三个数的和为 6
三个数的和为 6

 六、

f=lambda n,m:sum([k**m for k in range(1,n+1)])
s=f(100,1)+f(50,2)+f(10,-1)
print(s)

七、递归函数

求n!的方法

from functools import reduce
f = lambda x: reduce(lambda x,y: x*y, range(1, x + 1))
m = eval(input())
print(f(m))

递归法:

def f(x):
    if x <=1 : return 1
    return x*f(x-1)
m=eval(input())
print(f(m))

例1.9:

def f(x,n):
    if n==1 : return x
    return x*(1-f(x,n-1))
a,b=input().split()
print(f(eval(a),eval(b)))

八、导入模块的四种方式

1.import 模块名 [as 别名]

同时导入的模块有多个时,模块名字之间用逗号分隔,比如:

import time,random

这种方式必须以  “模块名.对象名”的形式进行访问

2.from 模块名 import 对象名 [as 别名]

这种方式不需要使用模块名作为前缀

from numpy import random as rd
from random import  randint
a=rd.randint(0,10,(1,3))    #numpy.random.randint()  第三个参数前面为生成个数,后面为每个的维数
print(a)
b=randint(0,10)    #random.randint()
print(b)

由此可知numpy.random.randint可以产生向量,对向量进行运算,二基础库中random.randint补发产生向量,一般对标量进行运算。

3.from 模块名 import *

一次导入模块中通过 __all__ 变量指定的所有对象(注意all前后是双下划线).使用这种依次导入库或者模块中所有对象的方式固然简单省事,但是并不推荐使用,一旦多个模块中有同名的对象,这种方式将会导致混乱。建议使用什么函数就导入什么函数

例1.10:

from math import *
f=lambda n:(1+log(n,e)+sin(n))/2/pi
part=sum([f(n) for n in range(1,101)])
ans=exp(2)+part
print(ans)

4.自定义模块的导入

 

 

九、快捷键

 shift+tab 撤回缩进

tab 缩进

ctrl+/ 快速注释/取消注释

十、同一行多条语句,语句之间使用分号;分割

如果语句一行太长,可以使用续航符\ ,但一般建议使用括号来包含多行内容

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值