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查找房源信息

删除房源信息

修改房屋信息

相关推荐
QQ同步助手3 分钟前
Javascript 网页设计案例:进阶交互与动态效果
开发语言·javascript·ecmascript
多方通行811 分钟前
关于Ubuntu的server版本登录无法输入password问题
linux·开发语言·ubuntu·编辑器·bug
程序猿阿伟32 分钟前
《探索C++在3D重建中的算法与技术要点》
开发语言·c++·自然语言处理
小白也有IT梦43 分钟前
在Jupyter Notebook/Lab 中探索 Python 类和对象的有效方法
ide·python·jupyter
ASEpochs44 分钟前
jupyter或者python文件导入其他python文件模块中方法路径问题
ide·python·jupyter
charlie1145141911 小时前
嵌入式Linux应用层开发——调试专篇(关于使用GDB调试远程下位机开发板的应用层程序办法 + VSCode更好的界面调试体验提升)
linux·c语言·开发语言·vscode·imx6ull·嵌入式linux·调试技术
白露与泡影1 小时前
2024最新最全面Java复习路线(含P5-P8),已收录 GitHub
java·开发语言·github
hjxxlsx1 小时前
Swift 的起源与发展历程:从诞生到繁荣
开发语言·ios·swift
菜是原罪1 小时前
shell脚本自动发布Java应用
java·开发语言
就爱学编程1 小时前
重生之我在异世界学编程之C语言:深入函数递归篇
c语言·开发语言