IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 函数的魅力你值得拥有* <^> * -> 正文阅读

[Python知识库]函数的魅力你值得拥有* <^> *

def add(a,b): ?#def定义一个函数
? ? print("exec ?add function")
? ? return a+b ? #return(返回值)

print( add(1,2))
result = add(3,4)
print(result)

1.方便维护,模块设计
2.减少代码重复利用

函数的参数
?1.形参:函数定义的时候,指定的参数
?2.实参:函数调用的时候,传递的参数

?按形参来分:
?1.必选参数
?2.默认参数
?3.可变长位置参数
?4.可变长关键字参数

?实参来分;
?1.位置参数
?2.关键字参数

必选参数
def ?stuinfo(name,age,sex):
? ? print(f"myname is {name}, my age is {age}, my sex is {sex}")
#位置参数
stuinfo("sc",4,'f')

默认参数
def ?stuinfo(name,age,sex="f"):
? ? print(f"myname is {name}, my age is {age}, my sex is {sex}")

stuinfo("sc",4)
stuinfo("sc",5,"m")
?

#关键字参数
stuinfo("sc",sex='m',age=6)
注意定义顺序 默认参数放在必选参数后面
注意调用属性 关键字参数必须放在位置参数的后面

可变长位置参数
def myargs(name,*num):
? ? print(f"{name}:{num}")
? ? print(type(num), *num) ?#-->print(type(num),1,2) 相当于解包,输出3个数值

myargs("sc")
myargs("sc1",1)
myargs("sc2",1,2)

pcking(打包)和 unpacking(解包)
packing
1,2 --> 元组(1,2)
*num --->unpacking
(1,2) --> 1,2


可变长关键字参数
def myargs2(**num):
? ? print(num)

myargs2(a=1,b=2)
myargs2(a=1)
myargs2(a=1,b=2,c=3)
packing ---> a=1,b=2 --> {'a': 1, 'b': 2}
unpacking --> {'a': 1, 'b': 2} -- > ?a=1,b=2

形参定义顺序
(必选参数,可变长位置参数,默认参数,可变长关键字参数)
实参
(位置参数,关键字参数)
def sumt(*args):
? ? sum1=0
? ? for i in args:
? ? ? ?sum1+=i
? ? ? ? print({sum1})
? ? print(f"和为: {sum(args)}")
sumt(1,2,3,4,5)

函数的return语句
退出函数,并且返回结果的
一个函数一旦执行到return就退出,不会执行后面的语句
如果函数没有return语句,默认返回None,如果return后面不接人任何表达式,也是返回None
return可以有多个
return一次也可以返回多个值

def maxnum(x,y):
? ? print("teturn 语句。。。。")
? ? if x>y:
? ? ? ? print("return x")
? ? ? ? return x
? ? elif x<y:
? ? ? ? print("return y")
? ? ? ? return y
? ? return x,y
? ? print("return end...")

result = maxnum(3,5)
i,j = maxnum(5,5)
print(f"结果为{result},i为{i},j为{j}")


#匿名函数
lambda 参数1 参数2 : 表达式
不需要创建函数名
只能有一个表达式,不用写return,该表达式的结果就是返回值

def add(a,b):
? ? return ?a+b
print(add(1,3))

sum1 = lambda *d,**f: print(f"{sum(d)} - {sum(f)}")
sum1(1,4,6,7,8)

使用匿名函数来返回两个数之间的最大值:
max = lambda x,y: x if x>y else y

max1 = lambda x,y: max(x,y)


使用匿名函数,将传入浮点数保留两位小数:
f = lambda x:float('%.2f'%x)
f = lambda x:round(x,2) ? ? ? ? #round() 方法返回浮点数x的四舍五入值
print(f(3.234523))

#递归函数
自己调用自己,形成循环
定义出口条件,什么时候结束递归
通常是把一个大问题通过寻找规律可以缩小规模的时候使用


求取n的阶乘
n!=1*2*3....*n
f(n) = n*f(n-1)

def add1(n):
? ? if n == 1:
? ? ? ? return 1
? ? return n*add1(n-1)
print(add1(6))


使用递归实现斐波拉契数列
1,1,2,3,5,8,13
第一第二都是1,后面的数都是前两个数的和
f(n) = f(n-1)+f(n-2)

def add1(n):
? ? if n == 1 or n ==2:
? ? ? ? return 1
? ? return add1(n-1) + add1(n-2)
print(add1(13))

函数的参数传递本质上都是传递引用
变量的空间作用域


不可变数据类型
def func1(x):
? ? print(x)
? ? #局部变量
? ? x=100
? ? print(x)

#全部变量
x=1
func1(x)
print(x)

#可变数据类型
def f(x):
? ? x[0] = 100
? ? print(x)

a = [1,2,3]
f(a)
print(a)


参数定义的时候,默认参数避免定义成一个可变数据类型
def f(a=[]):
? ? a.append(1)
? ? print(a)
f()
f()
f()

变量的作用域
def f():
? ? #x=2 ?如果你要申明全局变量,那就不要定义同名的局部变量,否则报错
? ? global x ? #申明x为全局变量
? ? x=5

x=1
f()
print(x)


变量名的解析(LEGB)
1.在本地变量中找 -- locals
2.在任意上层函数中找 ?-- enclosing
3.在全局作用域 ?-- globals
4.在内置作用域 ?-- builtin
print(a)
def f():
? ? #x = 2
? ? def f2():
? ? ? ? #x = 3
? ? ? ? #print(x)
? ? ? ? print(__name__)
? ? f2()
#x=1
f()

文档注释
文档注释是包,模块,类或者函数第一个引用三引号引起来的字符串


内建函数和工厂函数
内建:Python已经建好的,我们无需导入,直接调用就好
内建函数:Python已经建好的函数
内建方法:一般是针对面向对象而言,是类的方法。
内建方法就是指一个自带的对象所带的方法。如list的的pop操作

工厂:所谓工厂函数就是指这些内建函数都是类对象?
它们看上去象函数, 实质上他们是类。?
当你调用它们时, 实际上是生成了该类型的一个实例, 就象工厂生产货物一样。

? 用户密码复杂度验证 (封装成函数)
? 长度超过8位(必须) +1分
? 包括大、小写字母.数字.其它符号,以上四种至少三种 +1分
? 不能有长度超过或等于3的子串重复 +1分
? 密码的评分等级,默认2分,以上条件满足一条加1分
? 返回密码的评分等级,及要改进的点:
? 如 return 3, ['长度小于8', '密码没有由3种以上字符组成']

passwd=input("请输入你的密码")
score=2

def func0():
? ? func1()
? ? func2()
? ? if sum(lst1) < 3:
? ? ? ? print("没有三种以上的字符")
? ? func3()
? ? print(f'密码等级为:{score}')

def func1 ():
? ? global score
? ? if len(passwd) < 8:
? ? ? ? print('密码长度不够哦!')
? ? else:
? ? ? ? score += 1
? ? return score

lst1=[0,0,0,0]
def func2():
? ? global score
? ? for i in passwd:
? ? ? ? if sum(lst1) >= 3:
? ? ? ? ?score += 1
? ? ? ? ?break
? ? ? ? else:
? ? ? ? ? ? if i.isupper():
? ? ? ? ? ? ? ? lst1[0]=1
? ? ? ? ? ? elif i.islower():
? ? ? ? ? ? ? ? lst1[1]=1
? ? ? ? ? ? elif i.isdigit():
? ? ? ? ? ? ? ? lst1[2]=1
? ? ? ? ? ? else:
? ? ? ? ? ? ? ? lst1[3]=1
? ? return lst1

def func3():
? ? global score
? ? score1 = 0
? ? for i in range(len(passwd)):
? ? ? ? substr=passwd[i:i+3]
? ? ? ? subcount = passwd.count(substr)
? ? ? ? if subcount >= 3:
? ? ? ? ? ? print(f'{substr}有三个重复出现的字符串')
? ? ? ? ? ? score1=0
? ? ? ? ? ? break
? ? ? ? else:
? ? ? ? ? ? score1=1
? ? score = score + score1

func0()


购物系统
需求分析
1.登录注册模块
? ? 欢迎进入三乐购物系统
? ? 1.登录
? ? ? ?需要用户名和密码
? ? ? ?登陆成功就跳转到购物菜单
? ? 2.注册
? ? ? ?需要用户名和密码
? ? ? ?注册成功就回到登录初始化界面
2.购物模块
? ? ?1.充值
? ? ?2.选择购买商品
? ? ? ? a查看商品列表
? ? ? ? b选购商品---检测余额是否充足
? ? ?3.查看购物车
? ? ?4.结算
user_dict = {"root":{"passwd":"123456","money":0},
? ? ? ? ? ? ?"admin":{"passwd":"admin","moeny":0}
? ? ? ? ? ? ?}

product_list = {'1': {'name':'苹果', 'price':32},
? ? ? ? ? ? ? ? '2': {'name':'香蕉', 'price':55},
? ? ? ? ? ? ? ? '3': {'name':'橙子', 'price':88}}

def check_login(username, passwd):
? ? if username in user_dict and passwd == user_dict[username]["passwd"]:
? ? ? ? return True
? ? return False

def register(username, passwd):
? ? if username not in user_dict:
? ? ? ? user_dict[username] = {"passwd":passwd,"money":0}
? ? ? ? return True
? ? return False

def ?menu():
? ? print("登陆成功,进入购物".center(30," "))
? ? print("1.充值 ? ?".center(30," "))
? ? print("2.选择购买商品".center(30," "))
? ? print("3.查看购物车 ".center(30," "))
? ? print("4.结算 ? ?".center(30, " "))

shopcart=[]
#消费的金额为0
price=0
def show_product():
? ? global price
? ? print("商品列表".center(30," "))
? ? print("gid".center(10," "),"name".center(10, " "),"price".center(10," "))
? ? print("1".center(10, " "), "苹果".center(10, " "), "32".center(10, " "))
? ? print("2".center(10, " "), "香蕉".center(10, " "), "55".center(10, " "))
? ? print("3".center(10, " "), "橙子".center(10, " "), "88".center(10, " "))


print(f"欢迎进入三乐购物系统".center(30,"*"))
while True:
? ? print(f"1.登陆系统".center(30, " "))
? ? print(f"2.注册用户".center(30, " "))
? ? print(f"3.退出系统".center(30, " "))
? ? option = input("请输入你的选择:")
? ? if option == "1":
? ? ? ? username = input("请输入用户名:")
? ? ? ? passwd = input("请输入密码:")
? ? ? ? if check_login(username, passwd):
? ? ? ? ? ? while True:
? ? ? ? ? ? ? ? menu()
? ? ? ? ? ? ? ? option1 = input("请输入你的选择:")
? ? ? ? ? ? ? ? if option1 == "1":
? ? ? ? ? ? ? ? ? ? money = input("请输入充值金额:")
? ? ? ? ? ? ? ? ? ? user_dict[username]["money"] += int(money)
? ? ? ? ? ? ? ? ? ? print(f"当前用户余额为:{user_dict[username]['money']}")
? ? ? ? ? ? ? ? elif option1 == "2":
? ? ? ? ? ? ? ? ? ? show_product()
? ? ? ? ? ? ? ? ? ? if user_dict[username]["money"] < 0:
? ? ? ? ? ? ? ? ? ? ? ? print(f"{user_dict[username]['money']}不足,欢迎下次光顾")
? ? ? ? ? ? ? ? ? ? ? ? break
? ? ? ? ? ? ? ? ? ? option2 = input("请输入你要购买的商品")
? ? ? ? ? ? ? ? ? ? if option2 == '1':
? ? ? ? ? ? ? ? ? ? ? ? price += 12
? ? ? ? ? ? ? ? ? ? ? ? shopcart.append('苹果 12元')
? ? ? ? ? ? ? ? ? ? elif option2 == '2':
? ? ? ? ? ? ? ? ? ? ? ? price += 55
? ? ? ? ? ? ? ? ? ? ? ? shopcart.append('香蕉 55元')
? ? ? ? ? ? ? ? ? ? elif option2 == '3':
? ? ? ? ? ? ? ? ? ? ? ? price += 88
? ? ? ? ? ? ? ? ? ? ? ? shopcart.append('橙子 88元')
? ? ? ? ? ? ? ? ? ? else:
? ? ? ? ? ? ? ? ? ? ? ? print("输入错误")
? ? ? ? ? ? ? ? elif option1 == "3":
? ? ? ? ? ? ? ? ? ? print("您购买的商品如下")
? ? ? ? ? ? ? ? ? ? print("商品名称 ?商品价格")
? ? ? ? ? ? ? ? ? ? for i in shopcart:
? ? ? ? ? ? ? ? ? ? ? ? print(i)
? ? ? ? ? ? ? ? ? ? print(f"一共消费{price}!")
? ? ? ? ? ? ? ? elif option1 == "4":
? ? ? ? ? ? ? ? ? ? money = user_dict[username]["money"] - price
? ? ? ? ? ? ? ? ? ? print(f'您所剩的余额为{money}!')
? ? ? ? ? ? ? ? ? ? print("欢迎下次光临,祝您一路生风!!!")
? ? ? ? ? ? ? ? ? ? break
? ? ? ? else:
? ? ? ? ? ? print("登陆失败!")
? ? elif option == "2":
? ? ? ? username = input("请输入用户名:")
? ? ? ? passwd = input("请输入密码:")
? ? ? ? if register(username, passwd):
? ? ? ? ? ? print("注册成功!")
? ? ? ? ? ? print(user_dict)
? ? ? ? else:
? ? ? ? ? ? print("注册失败!")
? ? elif option == "3":
? ? ? ? Q = input("退出系统!!")
? ? ? ? break
? ? else:
? ? ? ? print("输入错误,请重新输入")
? ? ? ? break

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-12-04 13:24:12  更:2021-12-04 13:25:05 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 2:50:32-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码