zoukankan      html  css  js  c++  java
  • Python 基础

    作业要求

    Alex 100000
    Rain 80000
    Egon 50000
    Yuan 30000
    
    -----以上是info.txt文件-----
    
    实现效果:
    从info.txt文件中读取员工及其工资信息,最后将修改或增加的员工工资信息也写入原info.txt文件。
    
    效果演示:
    1. 查询员工工资
    2. 修改员工工资
    3. 增加新员工记录
    4. 退出
    
    >>:1
    
    请输入要查询的员工姓名(例如:Alex):Alex
    Alex的工资是:1000001. 查询员工工资
    2. 修改员工工资
    3. 增加新员工记录
    4. 退出
    
    >>:2
    
    请输入要修改的员工姓名和工资,用空格分隔(例如:Alex 10):Alex 10
    修改成功!
    1. 查询员工工资
    2. 修改员工工资
    3. 增加新员工记录
    4. 退出
    
    >>:3
    
    请输入要增加的员工姓名和工资,共空格分割(例如:Eric 100000):Eric 100000
    增加成功!
    1. 查询员工工资
    2. 修改员工工资
    3. 增加新员工记录
    4. 退出
    
    >>:4
    再见!
    View Code

    知识点

    1. 函数的基础知识:形参,实参,函数本身

    2. 文件的读写,序列化文件,or open文件

    • json 文件处理
    • txt 文件处理

    3. 列表/字典/集合的基础知识

    4. 如何让字典简单的序列化

    5. 高阶函数

    6. 函数的返回值

    7. 默认参数和动态参数

    8. 三元公式

    9. lamda 公式

    问题集

    1. 高阶函数的调用。在字典中,函数不写()。  

        main_menu = {
            "1": ["查询员工工资", search_user],
            "2": ["修改员工工资", modify_user],
            "3": ["增加新员工记录", add_user],
            "4": ["删除员工记录", del_user],
            "5": ["退出系统", exit]
        }

    但是,在下方调用时,要记得加()

            if main_choice in main_menu:
                main_menu[main_choice][1]()

    2. 关于 string.strip() , 如果输入string 中间有空格,这个空格会留存。 

    staff_info = input('请输入要修改的员工姓名和工资,用空格分隔(例如:Alex 10):').strip()
    print(staff_info)

    请输入要修改的员工姓名和工资,用空格分隔(例如:Alex 10):alex 10

    alex 10

    3. 添加数字到字典的value中时,记得要写int()。 否在添加的将是个string

    My Work

    #!usr/bin/env python
    # -*- coding:utf-8 -*-
    # __author__ = "JaneY"
    
    import sys
    import json
    
    
    def read_json_db(filename="staff_info.json"):
        # 读取json文件
        with open(filename, "r+", encoding="utf-8") as f:
            staff_dic = json.load(f)
        return staff_dic
    
    
    def write_json_db(staff_dic, filename="staff_info.json"):
        # 写入json文件, save
        with open(filename, "w+", encoding='utf-8') as f:
            json.dump(staff_dic, f)
    
    
    def add_user():
        # 增加员工
        staff_dic = read_json_db()
        staff_info = input('请输入要增加的员工姓名和工资,共空格分割(例如:Eric 100000):').strip()
        staff_info_list = staff_info.split(' ')      # 返回为: ["Eric", "100000"]
        staff_name = staff_info_list[0]
        staff_dic[staff_name] = int(staff_info_list[1])
        write_json_db(staff_dic)
        print("增加成功。新员工{}的工资为:{}".format(staff_name,
                                         staff_dic[staff_name]))
        main()
    
    
    def del_user():
        # 删除员工
        staff_dic = read_json_db()
        staff_name = input("请输入要删除的员工姓名(例如:Eric):").strip()
        if staff_name in staff_dic:
            del staff_dic[staff_name]
            write_json_db(staff_dic)
            print("删除成功")
        else:
            print("系统无该员工信息")
        main()
    
    
    def search_user():
        # 查询员工
        staff_dic = read_json_db()
        staff_name = input('请输入要查询的员工姓名(例如:Alex):').strip()
        if staff_name in staff_dic:
            print('{}的工资是:{}'.format(staff_name,
                                     staff_dic[staff_name]))
        else:
            print("无此员工信息")
    
        main()
    
    
    def exit():
        print('再见')
        sys.exit()
    
    def modify_user():
        # 修改信息
        staff_dic = read_json_db()
        staff_info = input('请输入要修改的员工姓名和工资,用空格分隔(例如:Alex 10):').strip()
        staff_info_list = staff_info.split(" ")   # string转为list: ["Alex","10"]
        staff_name = staff_info_list[0]
        if staff_name in staff_dic:
            staff_dic[staff_name] = int(staff_info_list[1])       # 此处必须加 int, 否则在json文件中工资将显示为"10"
            write_json_db(staff_dic)
            print("修改成功,{}的工资为{}".format(staff_name,
                                         staff_dic[staff_name]))
        else:
            print('无此员工信息')
    
        main()
    
    
    def main():
        # 主逻辑函数
        main_menu = {
            "1": ["查询员工工资", search_user],
            "2": ["修改员工工资", modify_user],
            "3": ["增加新员工记录", add_user],
            "4": ["删除员工记录", del_user],
            "5": ["退出系统", exit]
        }
        print('工资管理系统'.center(25, '-'))
        for i in main_menu:
            print(i, main_menu[i][0])
    
        while True:
            main_choice = input('Dear supervisor, please input your choice
    33[31m>>>33[0m').strip()
            if main_choice in main_menu:
                main_menu[main_choice][1]()
            else:
                print("Invalid input, please try again")
                continue
    
    
    if __name__ == "__main__":
        main()
    View Code
  • 相关阅读:
    BigDecimal
    android sdk manager 无法更新,解决连不上dl.google.com的问题
    程序卡在 while(SPI_I2S_GetFlagStatus(W5500_SPI, SPI_I2S_FLAG_TXE) == RESET) 处
    获取本设备IP地址
    Xamarin Android 监听音量键(下)
    xamarin Android 监听音量键(上)
    最大子序列和
    2.找出单独出现的数字
    编程题常见输入格式处理方法
    二进制比较:破解 LuaJIT 加密脚本的一种新思路。直接修改,无需反编译
  • 原文地址:https://www.cnblogs.com/lg100lg100/p/7123728.html
Copyright © 2011-2022 走看看