zoukankan      html  css  js  c++  java
  • day16---作业

    1、函数对象优化多分支if的代码练熟

    示例1:用户功能选择优化

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    
    from prettytable import PrettyTable
    
    
    def login():
        print('登录功能!')
    
    
    def save():
        print('存钱功能!')
    
    
    def transfer():
        print('转账功能!')
    
    
    def withdraw():
        print('取钱功能!')
    
    
    def check_banlance():
        print('查询余额功能!')
    
    
    def register():
        print('注册功能!')
    
    
    func_choice= {
        '0': ('退出', None),
        '1': ('登录', login),
        '2': ('存钱', save),
        '3': ('转账', transfer),
        '4': ('取钱', withdraw),
        '5': ('查询余额', check_banlance),
        '6': ('注册', register)
    }
    
    
    def atm_interface():
        while True:
            tb = PrettyTable(field_names=['功能编号', '功能名称'])
            for k in func_choice:
                tb.add_row([k, func_choice[k][0]])
            print(tb)
            user_choice = input('请输入功能编号:').strip()
            if not user_choice.isdigit():
                print('请输入一个正整数!')
                continue
            elif user_choice == '0':
                break
            elif user_choice in func_choice:
                func_choice[k][1]()
            else:
                print('该功能尚未支持!')
                _continue = input('是否继续(y,n):').strip().lower()
                if _continue == 'y':
                    continue
                else:
                    break
    
    
    atm_interface()

    示例2:求圆的周长和面积

    #!/usr/bin/env python
    #-*- coding:utf-8 -*-
    
    from math import pi
    
    def circle(radius,action=0):
        """
          action参数:(0,1)
                 0 -->求圆的周长 2*pi*radius
                 1 -->求圆的面积 pi*(radius**2)
        """
        def perimeter():return 2*pi*radius
        def area():return pi*(radius**2)
    
        if action == 0:
            res = perimeter()
        else:res = area()
        return res
    print('半径为4的圆的周长为:{:.2f}'.format(circle(4)))
    print('半径为6的圆的面积为:{:.2f}'.format(circle(6,action=1)))

    2、编写计数器功能

    编写计数器功能,要求调用一次在原有的基础上加一
            温馨提示:
                I:需要用到的知识点:闭包函数+nonlocal
                II:核心功能如下:
                    def counter():
                        x+=1
                        return x
    
    
            要求最终效果类似
                print(couter()) # 1
                print(couter()) # 2
                print(couter()) # 3
                print(couter()) # 4
                print(couter()) # 5

    实现:

    #!/usr/bin/env python
    #-*- coding:utf-8 -*-
    
    """
    计数器功能
    """
    
    from random import randint
    
    def outter():
        ct = 0
        def count():
            nonlocal ct
            ct += 1
            print('当前计数次数:{}'.format(ct))
        return count
    count = outter()
    
    for i in range(randint(0,5)):
        count()

    周末大作业:

    功能需求:
    # 编写ATM程序实现下述功能,数据来源于文件db.txt
    # 0、注册功能:用户输入账号名、密码、金额,按照固定的格式存入文件db.txt
    # 1、登录功能:用户名不存在,要求必须先注册,用户名存在&输错三次锁定,登录成功后记录下登录状态(提示:可以使用全局变量来记录)
    
    下述操作,要求登录后才能操作
    # 1、充值功能:用户输入充值钱数,db.txt中该账号钱数完成修改
    # 2、转账功能:用户A向用户B转账1000元,db.txt中完成用户A账号减钱,用户B账号加钱
    # 3、提现功能:用户输入提现金额,db.txt中该账号钱数减少
    # 4、查询余额功能:输入账号查询余额
  • 相关阅读:
    MySQL 清理slowlog方法
    MySQL定位锁争用比较严重的表
    Jvm介绍
    MyEclipse6.5的SVN插件的安装
    BASE64图片转字符串
    JDK常用工具
    Ftp服务端安装-Linux环境
    数据结构之队列
    自定义Exception异常
    基于Lua语言的触动精灵脚本开发
  • 原文地址:https://www.cnblogs.com/surpass123/p/12531969.html
Copyright © 2011-2022 走看看