python3 函数的使用
一、函数定义
语法:
def 函数名(参数列表):
函数体
eg1:不传参数
def add(a,b):
return a+b
add(1,3)
eg2:缺省参数
def add(a=1,b=2):
return a+b
add()
eg3:
def func(a,b):
print (a,b)
func(1,2)
func(b=1,a=2)
eg4:
def add(a,b=100):
return a+b
print (add(10))
print(add(10,200))
二、参数传递
2.1用函数实现一个除法
def div(a,b):
if not isinstance(a,(int,float)) and not isinstance(b,(int,float)):
return None
if b==0:
return None
return a/b
print (div(100,10))
2.2 统计一句话中数字的出现次数
s="I am a 19 years old boy!666!"
def count_digit_in_a_sentencee(s):
if not isinstance(s,str):
print ("the parameter is not a unicode string")
return 0
result=0
for i in s:
if i in "0123456789":
result +=1
return result
print (count_digit_in_a_sentencee(s))
2.3 按值传递与按引用传递
2.3.1 按值传递
a="hello world"
def fun(a):
a+="today"
return a
fun(a)
a
2.3.2 按引用传递
a={1:2,3:4}
def fun(a):
a[1]="good"
return a
fun(a)
a
备注:
按值传递:函数传入参数为不可变的,对外部的变量就没影响。a=100--按值 (传入不是地址)
按引用传递:函数传入参数为可变的,对外部的变量就有影响. ------按引用传(地址)
2.4 全局变量global的使用
a=100
def f():
global a
a+=1
return a
a
f()
a
2.5 可变参数
2.5.1 *arg的使用
def f(a,b,*arg):
print (type(arg))
for i in arg:
print (i)
f(1,2,3,4)
练习:
写一个函数,使用可变参数,计算函数所有参数之和
def f(a,*arg):
result=0
if not isinstance(a,(int,float)):
return result
result=result+a
for i in arg:
if isinstance(i,(int,float)):
result+=i
return result
print (f(1,2,3,"a",5))
2.5.2 **kw的使用
def f(a,b,**kw):
print (type(kw))
for k,v in kw.items():
print(k,v)
f(1,2,c=3,d=4,e=5)
备注:
总结:
*arg:表示把可变的多个参数,换换为了一个元组
**kw:表示把可变的多个命名参数,转换为有一个字典
2.5.3 综合练习
练习一:请使用**kw的方式,把可变的所有参数,算一个乘积
def f(a,b,**kw):
result=1
result=result *a*b
for k,v in kw.items():
if k.isdigit():
result*=k
else:
return result
return result
print (f(1,2,c=3,d=4,e=5))
练习二:同时使用*arg和**kw,算一下字母的长度之和
题目:同时使用*arg和**kw,算一下字母的长度之和,注意所有参数均使用字符串,字符串都是字母
def f(a,b,*arg,**kw):
result=0
result=len(a)+len(b)
for i in arg:
result +=len(i)
for k,v in kw.items():
if k.isalpha():
result +=len(k)
else:
return result
return result
print (f("he","world","this","is","a",number=3,middle=4,last=5))
练习三:猜数字游戏
随机生成一个1-100中间的整数,你再去输入一个数,如果大了,就提示大了,让用户重新输入;如果小了,让用户重新输入;如果用户输入的数等于随机生成的数,那么打印一下你一共猜测的总数是多少,随机数是多少,结束程序。
程序:
import random
random_number=random.randint(1,101)
times=0
while 1:
user_input_number=int(input("请输入一个数字:"))
times=times+1
print (user_input_number)
print (type(user_input_number))
if type(user_input_number) != type(random_number):
print ("你的输入有问题,请检查输入!")
elif user_input_number < random_number:
print ("你猜的数字小了,请重新输入!")
elif user_input_number >random_number:
print ("你猜的数字大了,请重新输入!")
else:
print ("恭喜你!终于猜对了!")
print ("你所猜的数字是: %d" %random_number)
print ("你一共猜了 %d 次" % times)
break
练习四、函数的偶数返回
练习:
写一个函数,一个字符串作为参数,函数需要将此字符串的偶数位字母做一个返回
def get_oven_position_letters(s):
letter_list=[]
for i in range(len(s)):
if i%2 ==0:
letter_list.append(s[i])
return "".join(letter_list)
print (get_oven_position_letters("abcedf"))
备注:该程序把“abcedf”中"a"当成第0个,“b”当成第一个来处理的