#coding=utf-8
# 声明函数
# def printSomthing():
# name=input('请输入姓名: ')
# sex= input('请输入性别: ')
# print('您的姓名是:%s 性别是: %s'%(name,sex))
#
# printSomthing()
# 定义函数加减乘除
def jjcc(a,b,c):
print(isinstance(b,int)) # isinstance 判断类型,如果类型一致则返回True,否则返回False
if a == "+":
print('b=%f c=%f 相加的结果是%s'%(b,c,(b+c)))
elif a == "-":
print('b=%f c=%f 相减的结果是%s' % (b, c, (b - c)))
elif a == "*":
print('b=%f c=%f 相乘的结果是%s' % (b, c, (b * c)))
elif a == "/":
print('b=%f c=%f 相除的结果是%s' % (b, c, (b / c)))
else:
print('参数不匹配,第一个参数请输入加减乘除符号')
jjcc('*',9.12,8)
jjcc(b=12,a='-',c=13)
# 形参:定义方法或函数时使用,实参:调用函数或者方法传递的具体值
print('----------------------参数在函数外部定义-------------------------')
def jjcc():
print(isinstance(b,int)) # isinstance 判断类型,如果类型一致则返回True,否则返回False
if a == "+":
print('b=%f c=%f 相加的结果是%s'%(b,c,(b+c)))
elif a == "-":
print('b=%f c=%f 相减的结果是%s' % (b, c, (b - c)))
elif a == "*":
print('b=%f c=%f 相乘的结果是%s' % (b, c, (b * c)))
elif a == "/":
print('b=%f c=%f 相除的结果是%s' % (b, c, (b / c)))
else:
print('参数不匹配,第一个参数请输入加减乘除符号')
a='*'
b=13
c=12
jjcc()
print('-----------------------------------------------------------------------')
#coding=utf-8
#判断三个数大小: 只能两两比较,在与第三个数进行比较
def maxNum(a,b,c): # 返回三个数中最大的一个
if c > max(a,b):
return c
else:
return max(a,b)
# print(maxNum(4,7,9))
###########################
result='测试'
def concatName(a,b):
result=a+b # 保存函数的返回值
# result 可以参与其他流程的运算
printResult(result) # 函数嵌套,使用保存函数的返回值
return result
#
def printResult(result):
print(result)
#concatName('丁丁','当当')
# 函数分类: 4种
'''
无参数,无返回值
无参数,有返回值
有参数,无返回值
有参数,有返回值
'''
# 写一个函数打印一条横线,另外一个函数打印自定义行数的横线
def printLine():
print('-'*20)
def printNumLine(n):
i=1
while i<=n:
printLine() #每循环一次打印一行横线
i+=1
#printNumLine(2)
# 写一个函数求三个数的和
def sumNum(a,b,c):
return a+b+c
# 写一个函数求三个数的平均值
def avgNum(a,b,c):
sum = sumNum(a,b,c)
avg=sum/3
return avg
result=avgNum(1,2,3) # 外部变量接收函数返回的结果
print('三个数的平均值是: %f'%result)
print('三个数的平均值是: %f'%avgNum(1,2,3))
#coding=utf-8
# globalvar
a=100 # a是globalvar文件的全局变量
def test():
print(a)
test()
def test2():
a=200 # 函数内部的变量,局部变量
print(a)
test2()
print('全局变量a=%d'%a)
def test3():
global a
a=300 # 函数内部的变量,局部变量;使局部变量变成全局变量,使用关键字global声明,再赋值
print(a)
print(a)
test3()
print('全局变量a=%d'%a)
#
i=[1] # i是空的列表
# 函数循环操作将循环的数字添加到列表
def test4():
global i
for j in range(1,5):
i.append(j)
test4() # 变成列表
print(i)
def test5(i):
for j in i:
print(j)
test5(i)
# 返回多个值
def divid(a,b):
shang=a//b
yu = a%b
return shang,yu
a=divid(13,5) # 接收多个返回值,(2,3)多个返回值是元组,取元组数据需要对应的变量名字
print(a) #
#函数参数缺省/默认值
def printinfo(name, age=18):
print('name: %s'%name)
print('age: %d'%age)
printinfo('嘉敏')
printinfo('嘉敏', 20)
name='abc abc'
print(name.count('a'))
# 不定长参数:少部分计算过程中无法确认参数个数,一般取值通过循环遍历
# args传递的参数要不是单个字符串或者数字,要么是元组
# kwargs 传递的参数要不指定key=value,要不指定字典
def bdc_fun(a,b,*args, **kwargs):
for key,value in kwargs.items():
print('参数对象名: %s 值: %s'%(key,value))
bdc_fun(1,2,3,n=4,m=5) # 调用的时候kwargs对应的参数传递必须是key=value格式
bdc_fun(1,2,3)
bdc_fun(1,2,*(3,4,5),**{"m":6, "n":7, "p":8})
# python语言是引用传递(注意不是值传递)
a=1
b=a
print(id(a))
print(id(b))
a=2
print(id(a))
print(id(b))
print(a)
print(b)
def selfAdd(a):
print('自增')
a=a+a
a=1
selfAdd(a)
print(a)
#coding=utf-8
def jiechen(n):
i=1
result=1
while i<=n:
result*=i
i+=1
return result
print(jiechen(5))
# 5的阶乘=4的阶乘*5 => FN=N*F(N-1)
def digui(n):
result=1
if n>=2:
result=n*digui(n-1)
return result
print(digui(5))
# 使用递归计算1-100之间的和
def diguijia(m):
result=1
if m>=2:
result=diguijia(m-1)+m
return result
print(diguijia(100))
# 假如工资按天发放,第一天发0.01块,第二天是第一天的两倍,以此类推,第30天的工资是多少
def gongzi(n): # fn=0.01*2^(n-1)
result=0.01
if n>=2:
result=2*gongzi(n-1)
return result
print(gongzi(30))
# 斐波那契数列
# 兔子:一对兔子一个月后成熟,每个月生一对兔子,问12个月后有多少对兔子
# 1 2 3 4 5 6
# 1 1 2 3 5 8
def fbnq(n):
result=1
if n>2:
result=fbnq(n-1)+fbnq(n-2)
return result
print(fbnq(12))
|