一 数据分类
数值,bool,str,list,tuple,set,dict
可变数据类型:list,set,dict(是否可以增删改查)
其它为不可变数据类型
有序数据类型:str,list,tuple
无序数据类型:数值,bool,set
python2中,dict是无序的;python3中,dict是有序的
### 一般情况下,有序数据类型可以索引,切片,重复,连接,但是字典除外,因为d[ key ]
可以for循环的数据类型:str,list,tuple,set,dict
二 如何去定义一个函数
def print(self, *args,sep='',end='\n',file=None):
pass
def 函数名():
函数体
定义函数,并不会执行函数体里面的内容
def fun():
print('python')
print('java')
调用函数的过程,才会执行命令
fun()
def welcome(name):
print('hello' + name)
name:定义函数时的变量,叫做形参,形参可以任意起名
welcome(' fentiao ')
fentiao: 真实的数据信息,调用函数时传的参数,称为实参
如:编写一个名为collatz()的函数,它有一个名为number的参数;
如果参数是偶数,那么collatz()就打印出number//2;
如果参数是奇数,那么collatz()就打印出3*number+1
三 函数动态添加删除成员
def fun()
print(fun.x)
###动态添加
fun.x=3
fun()
###动态删除
del fun.x
fun()
第二次删除后,打印不了了,x值已经不存在了
四 参数的分类
1) 位置参数 ###按照位置传参数
2) 默认参数 ###形参和实参可以不一致
3) 可变参数 ##需用*args来接收数值
4) 关键字参数
5) 参数解包:*变量名,**变量名
对list,set,tuple解包时,只需要在变量前加 *
如果要对dict进行解包,一个* 表示获取所有的key值,需要两个 **来对其进行解包,方可得到其value值
五 函数返回值
返回值:函数运算的结果,还需要进一步进行操作时,给一个返回值
return 用来返回函数执行结果的,如果没有返回,默认为None
一旦遇到return ,函数执行结束,后面的代码不会执行
可以看到,a接收到了返回值 4**3=64;而return 后面的打印 hello 并没有执行
Python可以见解返回多个值,如返回一个元组,将来可对元组进行解包
a用来接收 x**y,而b用来接收 x+y
六 函数补充
1) 参数检测(isinstance)
如果后面是两个或两个以上的类型,只要满足其中一个就行
也可以指定参数类型:
如:
如果输入的非指定的参数类型,会返回None,再次还设置了,如果不是,会返回 error
2) cmp(比较大小)
函数在python2 和 python3 中的区别:
python2:
如果前者比后者小,返回 -1;前者和后者相等,返回0;前者比后者大,返回1
python3:
会直接报错,已经不存在此函数
3)abs(绝对值)
这个函数在python 2和3 中是一样的
七 局部变量和全局变量
局部变量:
可以看到 a=5并没有影响 a=1,它们的id是不同的,局部变量是不会影响定义函数的外的变量的
但是,set,dict时可以加上去的
全局变量:
global ##声明a为全局变量
这样,定义函数里面的a=5,是会影响到函数外面的a=1的
八 函数的简单案例
1) 编写一个函数,输入一串数值,需要返回一个元组
将其平均值作为元组的第一个数值,将大于平均值的数值组成一个列表作为元组的第二个数值
2) 编写一个函数,接收字符串参数,需要返回一个元组
元组的第一个值为大写字母的个数,第二个值为小写字母的个数
3) 编写一个函数,接收一个列表和一个整形数k,返回一个新的列表
将列表下标k之前的(不包含k)元素逆转,将其之后的元素也进行逆转
4) 模拟轮盘抽奖游戏
轮盘分为三部分:一等奖,二等奖,三等奖
轮盘转的时候是随机的:
如果范围在[ 0, 0.08)之间,为一等奖
如果范围在[ 0.08, 0.3)之间,为二等奖
如果范围在[ 0.3, 1]之间,为三等奖
模拟本次活动1000人,模拟游戏时需要准备的礼物个数
5) 对于一个十进制的正整数,定义f(n)为其各位数字的平方和,如:
f(13)=1**2 + 3**2 = 10
f(207) = 2**2 +0**2 + 7**2 = 53
下面给出三个正整数 k,a,b,你需要计算有多少个正整数 n 满足 a<=n<=b,且 k*f(n)=n
输入:第一行包含3个正整数 k,a,b,k>=1, a<=b;
输出:输出对应的答案
如: 输入: 51 5000 10000
输出:3
九 列表生成式
[ experssion(或者函数) for item1 in 序列 if 判断语句
for item1 in 序列 if 判断语句
。。。。。。。
]
如:1)
2)如何将一个3*3矩阵转换成一个一维的数组:
3*3矩阵:[
[ 1 , 2 , 3]
[4 , 5 , 6]
[ 7 , 8 , 9]
]
一维数组: [ 1 , 2 3, 4, 5 , 6, 7, 8, 9 ]