zoukankan      html  css  js  c++  java
  • 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()
    
    
    
  • 相关阅读:
    vim发现交换文件
    Linux vim 一般模式(底线模式) 命令行模式 插入模式 记录2:
    linux的停止命令
    Linux centos7 常用命令 记录1:
    linux操作系统的关机命令
    linux解密shadow_Linux密码文件passwd和shadow分析
    mysql中root用户被忽略?
    Linux笔记01
    重装系统后恢复MySQL服务,Can't create test file C:ProgramDataMySQLMySQL
    重装JDK后,输入java -version报错:could not open " xxxxjvm.cf "
  • 原文地址:https://www.cnblogs.com/zqfzqf/p/11448548.html
Copyright © 2011-2022 走看看