Python学习39天

my_tools.py文件提供工具函数

python 复制代码
"""
此文件编写工具函数,供程序员使用  my_tools
"""


def read_confirm_select():
    """
    让用户输入:Y/N,不区分大小写,将用户输入值转为小写返回,若输入其他数据则一直循环输入
    :return:
    """
    # 让用户确认是否删除:Y表示继续删除,不区分大小写,若选择不是y/n,处于一直输入状态
    while 1:
        key = input("请输入你的选择(Y/N),请确认选择:")
        if key.lower() == 'y' or key.lower() == 'n':
            break
        else:
            print("选择错误,请重新输入")
    return key.lower()

house_opera.py 提供房源的各种操作

python 复制代码
"""
提供对房源的各种操作,house_opera
"""

# 包含工具文件
from my_tools import *

# 定义全局变量列表存放房源信息
Houses = [{"id": 1, "name": "amy", "phone": "000", "address": "经开", "rent": "800", "state": "未出租"}]
# 定义全局变量,存放房源ID
Id_Center = 1


def main_menu():
    """
    显示主菜单让用户选择
    :return:
    """
    print()
    print("房屋出租系统主菜单".center(60, "="))
    print("\t\t\t1 新 增 房 源")
    print("\t\t\t2 查 找 房 源")
    print("\t\t\t3 删 除 房 源 信 息")
    print("\t\t\t4 修 改 房 源 信 息")
    print("\t\t\t5 房 源 列 表")
    print("\t\t\t6 退       出")


def find_by_id(find_id):
    """
    根据输入的房屋返回对应的房屋信息(字典),若没有则返回None
    :param find_id:
    :return:
    """
    # 遍历房源信息列表
    for house in Houses:
        if house["id"] == find_id:
            return house
    # 若没有return 则默认返回None
    return None


def list_house():
    """
    显示房源信息函数,当用户输入5时显示
    :return:
    """
    print("房源信息".center(60, "="))
    # 打印表头信息
    print("编号\t\t房主\t\t电话\t\t地址\t\t月租\t\t状态(已出租/未出租)")
    # 遍历Houses这个列表取出来的信息就是一个字典包含了一个房源的所有信息
    for house in Houses:
        # 取出来的字典的值进行遍历输出
        for value in house.values():
            # 遍历一个字典的所有值,不换行
            print(value, end="\t\t")
        # 一个房源信息遍历完后换行
        print()
    print("房源信息显示完毕".center(60, "="))


def add_house():
    """
    增加房源信息函数
    :return:
    """
    print("添加房源信息".center(60, "="))
    name = input("姓名:")
    phone = input("电话:")
    address = input("地址:")
    rent = input("租金:")
    state = input("状态:")
    # 使用全局变量自动给房源添加编号
    global Id_Center
    Id_Center += 1
    # 创建房源信息对应的字典,同步增加到全局变量Houses列表中
    house = {"id": Id_Center, "name": name, "phone": phone, "address": address, "rent": rent, "state": state}
    Houses.append(house)
    print("添加房源成功".center(60, "="))


def exit_sys():
    """
    判断用户的二次确认--Y:确认执行操作,返回True;N:取消操作返回None;Y/N 不区分大小写
    :return:
    """
    # 接受判断函数
    choice = read_confirm_select()
    if choice == 'y':
        return True


def del_house():
    """
    根据用户输入id,删除房源信息
    :return:
    """
    print("删除房源信息".center(60, "="))
    del_id = int(input("请输入要删除的房源编号(-1退出):"))
    # 当用户输入-1时退出操作
    if del_id == -1:
        print("放弃删除房源信息".center(60, "="))
        # 返回空值,退出函数
        return
    # 判断用户输入的是Y还是N
    if exit_sys():  # 若是True则执行后续操作
        # 根据输入的id,去House中查找是否存在此房源信息
        house = find_by_id(del_id)
        # 存在房源信息则删除
        if house:
            # 执行删除操作
            Houses.remove(house)
            print("房源信息删除成功".center(60, "="))
        else:
            print("房源信息不存在,删除失败".center(60, "="))
    else:
        print("放弃删除房源信息".center(60, "="))


def check_house():
    """
    完成根据id查找房源信息功能
    :return:
    """
    print("查找房源信息".center(60, "="))
    # 接受用户输入的id
    check = int(input("请输入要查找的房源id:"))
    check_id = find_by_id(check)
    if check_id:
        print("编号\t\t房主\t\t电话\t\t地址\t\t月租\t\t状态(已出租/未出租)")
        for value in check_id.values():
            print(value, end="\t\t")
    else:
        print(f"查找房源的id: {check}不存在")


def update_house():
    """
    输入房源id修改房源信息
    :return:
    """
    print("修改房屋信息".center(60, "="))
    update_id = int(input("请选择修改房源信息编号(-1表示退出):"))
    # 若用户输入-1则退出操作
    if update_id == -1:
        print("操作取消".center(60, "="))
        return
    # 根据用户输入的id查找房源信息
    house = find_by_id(update_id)
    # 如果房源id不存在进行提示
    if not house:
        print(f"输入的房源id {update_id}不存在")
        return
    # 接收用户的信息
    name = input(f"姓名({house['name']}): ")
    # 若用户输入值则修改
    if name:
        house['name'] = name

    phone = input(f"电话({house['phone']}): ")
    if phone:
        house['phone'] = phone

    address = input(f"地址({house['address']}): ")
    if address:
        house['name'] = address

    rent = input(f"租金({house['rent']}): ")
    if rent:
        house['rent'] = rent

    state = input(f"状态({house['state']}): ")
    if state:
        house['state'] = state

    print("修改房源信息成功".center(60, "="))

main.py 主函数,程序执行位置

python 复制代码
# 导入模块 house_opera,提供房源信息具体操作的文件
from house_opera import *


def main():
    """
    主函数程序执行位置   main
    :return:
    """
    # 无线循环显示菜单
    while True:
        # 调用显示菜单函数
        main_menu()
        # 让用户选择并做出相应的处理
        key = int(input("请输入你的选择(1-6):"))
        if key in range(1, 7):
            if key == 1:
                add_house()
            elif key == 2:
                check_house()
            elif key == 3:
                del_house()
            elif key == 4:
                update_house()
            elif key == 5:
                list_house()
            # 输入6表示退出
            elif key == 6:
                if exit_sys():
                    print(f"你输入了{key},退出程序,欢迎下次使用")
                    # 退出循环
                    break
                else:
                    print("当前操作取消")
        else:
            print("输入信息错误请重新输入")


main()

显示房源信息,并增加房源信息

输入id查找房源信息

删除房源信息

修改房屋信息

相关推荐
麻雀飞吧20 分钟前
零基础选量化工具,先把问题说清楚
人工智能·python
段一凡-华北理工大学30 分钟前
AI推动工业智能化转型~系列文章20:工业 AI 平台架构:云-边-端协同的技术体系
人工智能·python·架构·工业平台·云-边协同
CodeBlog-star33 分钟前
Harness Engineering:Pi Agent 架构深度解析
人工智能·python·架构·harness工程
简不变36 分钟前
将components下的文件夹复制到别一个文件夹下,并重新生成CMakelist.txt文件
python
库玛西1 小时前
现代 C++ 智能指针全景指南:从 RAII 思想到工业级实践
c语言·开发语言·c++·笔记·面试
AC赳赳老秦1 小时前
风控岗应用:OpenClaw 采集公开司法与经营异常数据,自动生成企业风险评估报告
大数据·c语言·数据库·人工智能·python·php·openclaw
databook1 小时前
如何对稀疏数据的场景进行分析
python·数据挖掘·数据分析
liulilittle2 小时前
无锁并发容器的设计与实现原理
开发语言·c++·set·map·并发·无锁·lock-free
朋克洛德的码农2 小时前
Go并发-sync包四剑客:Mutex、RWMutex、WaitGroup、Once-从入门到原理
开发语言·后端·golang
Java&Develop2 小时前
DeltaFStation 宝塔 Linux 部署教程
python