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的更多相关文章
随机推荐
- P1879 [USACO06NOV]玉米田Corn Fields[轮廓线DP]
状压暴力显然可做.但是数据出的再大一点就要稳T了.理论$O(n4^m)$,只不过实际跑不满. 考虑用轮廓线DP,设$f(i,j,S)$为处理到$(i,j)$时候(这格还不确定)的轮廓线为$S$的情况( ...
- k8sService资源
一.service资源及其实现模型 通过规则定义出由多个pod对象组合而成的逻辑集合,以及访问这组pod的策略.service关联pod资源的规则要借助于标签选择器来完成 1.service资源概述 ...
- 如何解决tab栏切换只发一次请求的问题
用的antd的tab栏组件,发现切换tab栏只在componentDidMount里面发了一次请求,后来发现是缓存问题,于是用activeKey再次进行了判断,代码如下:
- buuctf@ciscn_2019_en_2
from pwn import * context.log_level='debug' io=process('./ciscn_2019_en_2') libc=ELF('./libc.so') el ...
- Python天天学_02_基础二
Python_day_02 金角大王:http://www.cnblogs.com/alex3714/articles/5717620.html ------Python是一个优雅的大姐姐 学习方式: ...
- 51 Nod 1089 最长回文子串(Manacher算法)
1089 最长回文子串 V2(Manacher算法) 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 回文串是指aba.abba.cccbccc.aaa ...
- hdu_1059(多重背包)
多重背包的讲解: 多重背包问题https://blog.csdn.net/yandaoqiusheng/article/details/84782655 ; i <= n; i++) { int ...
- win10下MYSQL 8.0.16的下载、安装以及配置
win10系统MySQL 8.0的下载安装超详细教程 https://blog.csdn.net/qq_34444097/article/details/82315587 下载安装配置链接:https ...
- CF1213F Unstable String Sort
题目链接 问题分析 题目实际上是一堆大于等于的约束.观察这\(2n-2\)个约束.第一组可以将要求的排成一个不降的序列,然后第二组就是在第一组的基础上再添加条件. 不妨设第一组生成的不降序列是\(\{ ...
- BZOJ 3456 城市规划 (组合计数、DP、FFT)
题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=3456 著名的多项式练习题,做法也很多,终于切掉了纪念 首先求一波递推式: 令\(F(n ...