day09

函数

函数是分开工具,不会减少代码量

def 函数名():
    <函数实现的功能>

定义函数的三种方式

空函数

def register():
    #todo: 注册功能,暂时不会写
    pass#写个空函数,占个位置

有参函数

def compare(x,y):
    if x>y:
        print(x)
    else:
        print(y)
compare(30,40)

无参函数

def func():
    print(1)
func()

函数的返回值

1.如果函数没有返回值,默认返回None(None就是返回值(使用函数后拿到的一个结果))

2.函数可以通过return返回返回值

def compare():
    x=10
    y=20
    if x>y:
        return x
    else:
        return y
res=compare()
print(res)

3.return可以终止函数

def print_1_10():
    for i in range(10):
        if i==5:
            return#终止函数
        print(i)
print_1_10()

4.return可以返回多个值,以列表的形式存储

def return_nums():
    return 10,100,1000
res=return_nums()
print(res[1])

函数的参数

形参和实参

1.形参

在函数定义阶段括号内定义的参数,本质就是变量名

2.实参

在函数调用阶段括号内传入的参数,本质就是变量值

位置形参

1.位置形参

在函数定义阶段,按照从左到右的顺序依次定义的形参

特点:按照位置定义的形参,都必须被传值,多一个不行,少一个也不行

2.位置实参

在函数调用阶段,按照从左到右的顺序依次定义的实参

特点:按照位置为对应的形参依次传值

关键字

在调用函数时,按照key=value的形式为指定的参数传值

特点:可以打破位置的限制,但是仍能为指定的形参赋值

注意:1.可以混用位置实参和关键字实参,但是位置实参必须在关键字实参的左边。

​ 2.可以混用位置实参和关键字实参,但不能对一个形参重复赋值

默认形参

在定义阶段,就已经被赋值

特点:在定义阶段就已经被赋值,意味着在调用时可以不用为其赋值

注意:

​ 1.位置形参必须放在默认形参的左边

​ 2.默认形参的值只在定义阶段赋值一次,也就是说默认参数的值在函数定义阶段就已经固定了。

编写注册函数

def register():
    print('注册界面')
    username=input('输入用户名')
    pwd=input('输入密码')
    with open('user.txt','a',encoding='utf8') as fa:
        fa.write(f'{username}:{pwd}|')
        print('注册成功')

编写登陆函数

def login():
    print('登陆见面')
    user_id=[]
    with open('user.txt','r',encoding='utf8') as fr:
        data=fr.read()
    data=data.split('|')
    for i in data:
        data_s=i.split(':')
        user_id.append(data_s)
    user_log=input('输入用户名')
    pwd_log=input('输入密码')
    for j in range(0,len(user_id)):
        if user_id[j][0]==user_log and user_id[j][1]==pwd_log:
            print('登陆成功')
            break
     else:
        print('登陆失败')

编写购物车系统

import os
print('''注册(按1)
登陆(按2)
'''
)
def register():
    print('注册界面')
    username=input('输入用户名')
    pwd=input('输入密码')
    qianqian=input('余额')
    with open('userr.txt','a',encoding='utf8') as fa:
        fa.write(f'{username}:{pwd}:{qianqian}|')
        fa.flush()
        print('注册成功')
        login()

def login():
    print('登陆界面')
    user_id=[]
    with open('userr.txt','r',encoding='utf8') as fr:
        data=fr.read()
    data=data.split('|')
    for i in data:
        data_s=i.split(':')
        user_id.append(data_s)
    for k in range(1,4):
        user_log=input('输入用户名')
        pwd_log=input('输入密码')
        for j in range(0,len(user_id)):
            if user_id[j][0]==user_log and user_id[j][1]==pwd_log:
                global xian
                xian=user_id[j][2]
                print('登陆成功')
                wuping()
                return
        else:
            print(f'用户名或密码错误,你还有{3-k}次机会')

def wuping():
    wupinglst=[
        ['红米',999],
        ['小米',998],
        ['华为',1999],
    ]
    xun=True
    while xun:
        print('********************************')
        for i in range(0,len(wupinglst)):
            print(f'编号{i}  {wupinglst[i][0]}    {wupinglst[i][1]}')
        bianhao=int(input('按编号选择物品'))
        with open('gouwulan.txt','a',encoding='utf8')as ff:
            ff.write(f'{wupinglst[bianhao][0]}:{wupinglst[bianhao][1]}|')
        sf=input('是否继续购买')
        if sf!='y':
            tuichu = input('结账按p')
            if tuichu=='p' :
                jiezhang()
                return


def jiezhang():
     with open('gouwulan.txt','r',encoding='utf8') as fff:
         gouwup=fff.read()
     gouwup_list=gouwup.split('|')
     # print(gouwup_list)
     gouwulann=[]
     for q in gouwup_list:
         gouwup_str=q.split(':')
         print(gouwup_str)
         gouwulann.append(gouwup_str)
     print('购物篮')
     count=0
     for t in range(0,len(gouwulann)-1):
        print(f'{gouwulann[t][0]}')
        count=count+int(gouwulann[t][1])
     # print(count)
     # print(xian)
     if count>int(xian):
         print('余额不足')
     else:
         print(f'已发货,余额为{int(xian)-count}')
     os.remove('gouwulan.txt')
xian=0
m=int(input('请选'))
if m==1:
    register()
if m==2:
    login()

转载于:https://www.cnblogs.com/zqfzqf/p/11448548.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值