day05函数、集合、random模块
1.函数
1)位置参数
def my(name,sex):
#调用函数时位置参数是必填的
return name,sex
print(my()) #如果不传值时会报错
2)默认参数及默认参数的使用
def db_connect(ip,port=3306): #port=3306给默认参数赋值
return print(ip,port)
db_connect("192.0.0.1") #调用函数不给默认参数传值时,不会报错,会使用默认值
db_connect("192.0.0.1",3307)
默认参数练习:
import json
# 写一个函数,如果传入的dic不为空时,写入文件,如果传入的dic为空,读文件
def op_file(filename,dic=None):
if dic:
with open(filename,'w',encoding="utf-8") as f1:
json.dump(dic,f,ensure_ascii=False)
else:
with open(filename,encoding="utf-8") as f2:
content=f2.read()
if content:
reg=json.load(content)
else:
reg={}
return reg
3)return的作用
#return的作用 1.结束函数,只要遇到return函数结束 2.返回函数结果
def my():
for i in range(50):
return i
print(my()) #只返回一个值 0
4)写一个函数,校验传入的参数是否是小数
思路:1)传入的参数必须是数字
2)传入的参数必须有且只有一个小数点
3)如果参数的参数时负小数必须满足条件1和条件2,并且只以一个负号开头
def jy_xiaoshu(num):
num=str(num)
if num.count(".")==1:
a,b=num.split(".")
# print(type(a),b)
if a.isdigit() and b.isdigit():
print("是正小数")
elif a.startswith("-") and a[1:].isdigit() and b.isdigit():
print("是负小数")
# else: # 使用else时,如果传入的值时"--10.3",返回的是“” ,当传入10a.3返回也是空
# else:
return print("传入不是小数")
jy_xiaoshu("---10.3")
5)全局变量
name="aaa" #全局变量,str.int,元组不可变的需要声明
names=[] #如果是list或者字典不需要声明全局变量
def get_name():
global name #如果想在函数中修改全局变量的值,需要声明变量的值
name="bbb"
print(name)
names.append("hahha")
get_name()
print(name)
6)递归调用
#递归函数自己调用自己,最多递归999次
# def say():
# print("say")
# say()
#
# say()
#直到输入的数为偶数为止
def test1():
num = int(input('please enter a number:'))
if num%2==0:#判断输入的数字是不是偶数
return True #如果是偶数的话,程序就退出了,返回true
print('不是偶数请重新输入!')
return test1()#如果不是偶数的话继续调用自己,输入值
print(test1())#调用test
7)可变参数
#可变参数在形参前面加 * ,传多个参数时是元组,**传入的是字典
"""
1.可变参数时传参时不是必填的,
"""
# def sen_sys(*phone):
# print("报警了注意",(phone))
#
#
# sen_sys() #报错
# sen_sys(1313,2313) #报错
# sen_sys(23424)
def my(name,country="beijing",*args,**kwargs):
#位置参数 2.默认参数。3.可变参数 4.关键字
print()
2.集合
#集合天生不重复
#集合是无序的,不能用下标取值
list=[1,2,1,3]
l=set(list)
print(l)
jihe=set() #定义空集合
jihe.add("5") #添加
jihe.remove("5") #删除指定元素
jihe.pop() #随机删除一个元素
3.模块
1)标准模块 :不需要单独安装,python自带,如os.time,random模块
random模块的使用
import random
import time
import json
import os
print(random.randint(0,100)) #随机取一个整数
print(random.uniform(0,99)) #取一个小数
print(random.choice("sdasd")) #随机取一个元素,choice可以循环的列表,str,集合等
stu=["aa",'bb','cc','dd']
print(random.sample(stu,2)) #随机取n个元素
l=list(range(100))
random.shuffle(l) #这个函数没有返回值,打乱列表中的元素
print(l)