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)
python__005的更多相关文章
随机推荐
- 关于join
- 第二章 Vue快速入门-- 17 v-for指令的四种使用方式
1.v-for循环普通数组 <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...
- oracle的监听控制
来自网络: listener control 监听控制 因为你在键入 lsnrctl 回车之后,就进入到监听控制界面. 在启动.关闭或者重启oracle监听器之前确保使用lsnrctl status命 ...
- 更新protobuf
sudo pip install --upgrade protobuf sudo apt-get install libprotobuf-dev protobuf-compiler这个不知道是什么问题 ...
- yum安装nginx,配置资源访问出现403Forbidden问题
使用yum安装nginx后除了nginx自带页面其他配置页面都是403forbidden问题. 暂时的解决办法是,修该nginx配置文件中的user为root , 然后关闭seliunx或者添加ngi ...
- 百度地图api,点击标注,改变标注marker图标的链接地址
改变选中的图标样式 // 选中高亮标注图片 let mapIcon = ‘./icon.png’; //标注点 let markerArrs = [{},{},....]; // 点击标注点 mark ...
- 论文阅读:OpenFlow: Enabling Innovation in Campus Networks
摘要: 本白皮书提出了OpenFlow——研究人员在他们每天使用的网络中运行实验协议的一种方式. OpenFlow基于以太网交换机,具有内部流表以及用于添加和删除流条目的标准化接口.我们的目标是鼓励网 ...
- Jmeter(二) Jmeter组件介绍
一.测试计划 测试的起点,同时也是其他所有组件的容器 二.线程(用户) Setup 线程组:一种特殊类型的线程,可用于执行预测试操作.即执行测试前进行定期线程组的执行 Teardown 线程组:一种特 ...
- MergeActors技巧
打开界面 MergeActors的界面在Window>DeveloperTools>MergeActors 启用合并材质的方法 使用Use specific LOD Level 一种特殊情 ...
- 10个PHP代码片段
还记得CSDN研发频道此前发表过的一篇<可以直接拿来用的15个jQuery代码片段>吗?本文笔者将继续为你奉上10个超级有用的PHP代码片段. PHP是一种HTML内嵌式的语言,是一种在服 ...