1.定义函数
def haha() 定义关键字:def;函数的名字()括号需要存在 自定义函数里面的参数成为形参,不需要有值
函数体 #函数体需要进行缩进,
haha() 调用函数,调用函数时,里面的参数成为实参需要有值
2.定义空函数
定义一个什么事都不用做的空函数,使用pass语句;pass用来做占位符,还没有想好代码怎么写放置pass让代码运行;
def hell():
pass
3.函数返回值:
def hello(name):
#print("hello %s"%(name))
return "python" #关键字,定义函数的返回值,通过print打印
print(hello("c")) #调用函数,打印返回值
返回一个tuple可以省略括号;python里面的函数返回多值其实就是返回一个tuple;函数如果没有返回值,默认为none
4.return 关键字
def hello():
return "ok" #函数一旦遇到关键字return不会在执行后面的命令;
print("hello")
print(hello()) #调用函数可以进行打印返回值
5.调用定义函数,遍历循环列表,以次输出
def hello(n):
print("hellp %s"%(n))
for username in ["c++", "python"]:
hello(username)
6.函数的参数检查
1.调用参数时,如果参数个数不对,python解释器会检查出来并进行报错;
2.如果参数类型不对,解释无法识别
3.数据类型检查可以使用内置函数isinstance实现 (“情况,建议,实例”专业术语,实例)
7.返回值:求取平方或者几次方
def mypow(a,b):
return a ** b
print(mypow(2,4)) #求取2的4次方
print(mypow(2)) #传递的参数不够或者超出都会进行报错;
8.函数参数
形参:可选参数
当形参里面*变量名表示可选参数,可选参数可以传递任意个参数;
def mysum(*args): #可选参数一般默认arges
return sum(args)
print(mysum(1,2,3)) #传递多个参数进行求和
形参:关键字参数,定义:**变量名,可以接受任意多个key-value值键对;
def get_info(username,passwd,**kwargs):
print(username,passwd)
print(kwargs,type(kwargs))
9.函数的作用域:全局作用域,局部作用域
全局作用域作用整个脚本
num = 10
print("num=",num) #打印10的ASII码的地址
局部作用域:
def fun():
num = 2 #局部函数作用域函数运行结束被释放。
print("id=",id(num))
print("num=%s"%(num))
fun()
使用global声明局部变量为全剧变量
count = 10
print("全局变量:%s"%(count))
def hello():
global count
count = 20
print("局部变量:",count)
hello() #调用函数
print(count)
10.Collatz序列
编写一个名为collatz()的函数,它有一个名为number的参数。如果参数是偶数,那么collatz()就打印出number//2,并返回该值。如果number是奇数,collatz()就打印并返回3*number+1。 然后编写一个程序,让用户输入一个整数,并不断对这个数调用collatz(),直到函数返回值1(令人惊奇的是,这个序列对于任何整数都有效,利用这个序列,你迟早会得到1!既使数学家也不能确定为什么。你的程序在研究所谓的“Collatz序列”,它有时候被称为“最简单的、不可能的数学问题”)。
def collatz(number):
if number%2 == 0:
return number//2
else:
return 3*number+1
def main():
num = int(input("请输入数字:"))
while True:
if collatz(num) == 1:
print(1)
break
else:
num = collatz(num)
print(num)
main() #调用函数,函数里面有值,调用时可以不用输入
11.ip重复统计:
随即生成200个ip
ip的范围172.25.254.1-172.25.254.200之间;
输出所有不通的ip及其每个ip重覆1次数
import random
l = []
for i in range(200):
ip = "172.25.254." + str(random.randint(1,200))
l.append(ip)
ip_count = {}
import pprint
将遍历的ip地址存放进空的集合,ip_count[ip]对应相应的value值
print(type(ip_count))
for ip in l:
if ip in ip_count:
ip_count[ip] += 1
else:
ip_count[ip] = 1
pprint.pprint(ip_count) #可以调用pprinte竖向打印
12.数字重复统计
随机生成1000个整数;
数字范围20-100
升序输出所有不同的数字及其每个数字重复次数
n = int(input("请输入生成整数的个数:"))
import random
number_list = []
for i in range(n):
new_number = random.randint(20,100)
number_list.append(new_number)
#print(number_list) #打印生成的数字,查看是否正确:
list = sorted(number_list)[::-1]
number_count = {}
import pprint
for number in list:
if number in number_count:
number_count[number] += 1
else:
number_count[number] = 1
pprint.pprint(sorted(number_count)[::-1]) # 打印升序排列的数字
pprint.pprint(number_count) #计算列表里面重复次数