python__005

一、字符串格式化

#字符串的拼接#
msg='i am a best boy'+'非常帅'
print(msg)
name=input('name:')
hobby=input(('hobby:'))
age=input('age:')
print (' i am %s ,my hobby is %s,age%s ,%s,年龄:%d'%(name,hobby,age,[222,3333,'gdgfvsdhfs'],555555))
#str能接受所有类型,
#打印浮点数  在%后边加个点,在添加数字,表示保留几位小数
msg1='float%.2f:'% 99999.22222258898995889888
print(msg1)
#打印百分比 %%
msg2='%%float%3s:'% 99999.2
print(msg2)

#根据键值对传值
msg3='我爱%(china)s,我爱%(city)s'%{'china':'中国','city':'甘肃-渭源'}
print(msg3)

msg3='我爱%(china)-60s,我爱%(city)s'%{'china':'中国','city':'甘肃-渭源'}
msg4='我爱\033[41;1m%(china)+2s\033[0m,我爱%(city)s'%{'china':'中国','city':'甘肃-渭源'}
print(msg3)
print(msg4)
#返回我爱中国 ,我爱甘肃-渭源
# 我爱中国,我爱甘肃-渭源
#format
#format格式化 不一一对应将会报错
name=input('name')
age=input('age')
sex=input('sex')
tp1='i anm {},age{},sex{}'.format(name,age ,sex)

print(tp1)
tp2='i anm {2},age{0},sex{1}'.format(name,age ,sex)
print(tp2)
tp3='i anm {2},age{2},sex{1}'.format(name,age ,sex)
print(tp3)
#返回:name55
# age55
# sex5h
# i anm 55,age55,sex5h
# i anm 5h,age55,sex55
# i anm 5h,age5h,sex55
print('i am {name1},{age1}'.format(**{'name1':'name','age1':'age'}))
print('i am {name1},今年{age1}岁'.format(name1='张琪',age1='19'))
# i am name,age
# i am 张琪,今年19岁
print('i am {[0]},我今年{[0]}'.format(['小明','小丽'],['23','18']))
#i am 小明,我今年23

初中数学函数定义:一般的,在一个变化过程中,如果有两个变量x和y,并且对于x的每一个确定的值,y都有唯一确定的值与其对应,那么我们就把x称为自变量,把y称为因变量,y是x的函数。自变量x的取值范围叫做这个函数的定义域

例如y=2*x

 

python中函数定义:函数是逻辑结构化和过程化的一种编程方法。

python中函数定义方法:

def test(x):
"The function definitions"
x+=1
return x

def:定义函数的关键字
test:函数名
():内可定义形参
"":文档描述(非必要,但是强烈建议为你的函数添加描述信息)
x+=1:泛指代码块或程序处理逻辑
return:定义返回值


调用运行:可以带参数也可以不带
函数名()

补充:

1.编程语言中的函数与数学意义的函数是截然不同的俩个概念,编程语言中的函数是通过一个函数名封装好一串用来完成某一特定功能的逻辑,数学定义的函数就是一个等式,等式在传入因变量值x不同会得到一个结果y,这一点与编程语言中类似(也是传入一个参数,得到一个返回值),不同的是数学意义的函数,传入值相同,得到的结果必然相同且没有任何变量的修改(不修改状态),而编程语言中的函数传入的参数相同返回值可不一定相同且可以修改其他的全局变量值(因为一个函数a的执行可能依赖于另外一个函数b的结果,b可能得到不同结果,那即便是你给a传入相同的参数,那么a得到的结果也肯定不同)

2.函数式编程就是:先定义一个数学函数(数学建模),然后按照这个数学模型用编程语言去实现它。至于具体如何实现和这么做的好处,且看后续的函数式编程

总结使用函数的好处:

1.代码重用

2.保持一致性,易维护

3.可扩展性

过程定义:过程就是简单特殊没有返回值的函数

总结:当一个函数/过程没有使用return显示的定义返回值时,python解释器会隐式的返回None,

所以在python中即便是过程也可以算作函数。

总结:

   返回值数=0:返回None

   返回值数=1:返回object

   返回值数>1:返回tuple

二、函数参数

#函数的参数分为形参和实参
#形参变量只有被调用时才分配内存单元,在调用结束时,即刻释放分配的所有内存单元,因此形参只在函数内部有效,函数调用结束返回主调用函数后,则不能再使用该形参变量
#实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,他们必须要有确定的值,以便把这些值传给形参,因此应预先用赋值,输入等办法使参数获得确定值
def cals(x,y):# 《==形参
res=x**y
return res #函数遇到return,整个函数结束运行
a=999999
b=2
c=cals(a,b) #《==实参
print('c:',c)
v=cals(44444,55555)
print('v:',v)

#位置参数和关键字,(标准调用:实参与形参位置一一对应;关键字调用:位置无需固定)
def test(x,y,z):
print(x)
print(y)
print(z)
test(1,2,3) #标准调用
test(x=33,z=555,y=555)# 关键字调用
test(1,2,z=3)   #位置参数必须在关键字参数的左边
#默认参数
# def handle (x,type=None):
# print(x)
# print(type)
# handle('rrrr')
# handle('rrrr','sb')
# handle(x='rrrrrrr',type='rrrrrrrrr')
#参数组:非固定长度的参数,**字典,*列表
# def handle (x,*type):
# # print(x)
# print(type)
# # print(type[1])
# # handle('rrrr',333,4444,'ggggggggggg')
# handle(22,*['22','eee','ddd'])
# handle(1,*{'name':'wang'})

def handle(x,**type):      #关键字参数交给**type处理
print(x)
print(type)
handle(1,w=1,y=2)#实参名与形参名重复会报错

三、局部变量与全局变量

#全局变量
name='zs'
def change():
print(name)
change()

#局部变量
name='zs'
def change():
name='最傻的'
print(name)
change()

前向变量
#正常
# def bar():
# print('from bar')
# def foo():
# print('from foo')
# bar()
# foo()
#正常
# def foo():
# print('from foo')
# bar()
# def bar():
# print('from bar')
# foo()
#报错
# def foo():
# print('from foo')
# bar()
# foo()
# def bar():
# print('from bar')
# #函数即变量,



四、递归

#递归
#递归特性
'''
1、必须有一个明确的结束条件
2、每进入更深一层递归时,问题规模相比上次递归都应有所减少
3、递归的效率不高,递归层次过多会导致栈溢出(在计算机当中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧。由于栈的大小不是无限的,所以递归调用的次数过多,会导致栈溢出)
'''
# def cal(n):
# print(n)
# if int(n/2)==0:
# print('result:',n)
# return n
# return cal(int(n/2))
#
# res1=cal(10)
# print('jjj',res1)
import time
person_list=['张帅','帅个','靓女','张鹏','小姐姐']
def ask_way(person_list):
print('-'*80)
if len(person_list)==0:
return ('无人知道')
person=person_list.pop(0)
if person=='张鹏':
return '%s说,在三生三世十里桃花村'%person
print('hi,%s靓女,敢问你认识张鹏大帅哥家在哪里吗嘛'%person)
print('%s回答道:我不知道,念你知道张鹏大帅哥,你等着,我帮你问问%s..'%(person,person_list[0]))
time.sleep(3)
res=ask_way(person_list)
return res

ress=ask_way(person_list)
print(ress)
 





posted @ 2019-06-16 23:15  春风几度闲  阅读(316)  评论(0编辑  收藏  举报