python 基础综合应用——小开发

综合复习

  • 变量
  • 循环
  • 函数
  • 模块

开发 名片管理系统

名片管理系统介绍

名片管理系统可以理解成花名册软件,通过个人新建人的信息后可以进行查询等简单操作的程序

名片管理系统有三个作用,

1.新建名片

2.显示全部名片

3.查询名片

欢迎使用【名片管理系统】V1.0

 

1. 新建名片

2. 显示全部

3. 查询名片

0. 退出系统

名片管理系统的开发

1.框架的搭建

2.新建名片

3.显示所有名片

4.查询名片

5.查询成功后修改删除名片

6.让python程序直接运行

 


1.框架的搭建

在我们开发程序的时候都需要做的事情就是构建框架

构建框架首先需要做的就是准备文件(文件需要的是主文件和工具文件),还需要准备一些基本的代码能够简单运行起来

对于准备文件,主文件是main文件,所有的操作都要经过这里启动

对于工具文件,就是对于这个程序进行其他操作(删除,增添)

先创建 一个main文件

无限循环

  • 在开发软件时,如果 不希望程序执行后 立即退出

  • 可以在程序中增加一个 无限循环

  • 由用户来决定 退出程序的时机

当用户输入数字进行程序之后,即为正确运行,那对于正确(true)之后主文件进行后续的操作

​
while True:
​
    # TODO(小明) 显示系统菜单
​
    action = input("请选择操作功能:")
​
    print("您选择的操作是:%s" % action)
​
    # 根据用户输入决定后续的操作
    if action in ["1", "2", "3"]:
        pass
    elif action == "0":
        print("欢迎再次使用【名片管理系统】")
​
        break
    else:
        print("输入错误,请重新输入")
​

在这里需要注意的是

 

  1. 使用 in 针对 列表 判断,避免使用 or 拼接复杂的逻辑条件

  2. 没有使用 int 转换用户输入,可以避免 一旦用户输

 

  • pass 就是一个空语句,不做任何事情,一般用做占位语句

  • 是为了保持程序结构的完整性

对于工具文件

  在名片管理系统中,工具文件的作用就是

1.显示菜单

2.新建名片

3.显示全部

4.搜索名片

所以对于工具文件,我们采取的方式是,创造四个函数

def show_menu():
​
    """显示菜单"""
    pass
​
def new_card():
​
    """新建名片"""
    print("-" * 50)
    print("功能:新建名片")
​
​
def show_all():
​
    """显示全部"""
    print("-" * 50)
    print("功能:显示全部")
​
​
def search_card():
​
    """搜索名片"""
    print("-" * 50)
    print("功能:搜索名片")
​

注意:三个引号的作用是一个一个输出 

在做好主文件和工具文件之后我们应该进行的操作是将工具文件的四个函数导入进行优化操作

import

import cards_tools
​
while True:
​
    cards_tools.show_menu()
​
    action = input("请选择操作功能:")
​
    print("您选择的操作是:%s" % action)
​
    # 根据用户输入决定后续的操作
    if action in ["1", "2", "3"]:
​
        if action == "1":
            cards_tools.new_card()
​
        elif action == "2":
            cards_tools.show_all()
​
        elif action == "3":
            cards_tools.search_card()
​
    elif action == "0":
        print("欢迎再次使用【名片管理系统】")
​
        break
    else:
        print("输入错误,请重新输入:")
​

至此我们的名片管理系统的操作就大致完成了 

接下来就是完善每一个工具文件的函数操作

2.新建名片

之前的文章说过,程序是用来运行数据的,变量是存储数据的

那么我们用户需要新建名片那么就,需要保存信息到字典中,将名片字典添加到列表中,这个时候我们用户就添加成功

定义名片列表变量

  • 在 cards_tools 文件的顶部增加一个 列表变量

  • # 所有名片记录的列表
    card_list = []
    def new_card():
    ​
        """新建名片
        """
        print("-" * 50)
        print("功能:新建名片")
    ​
        # 1. 提示用户输入名片信息
        name = input("请输入姓名:")
        phone = input("请输入电话:")
        qq = input("请输入 QQ 号码:")
        email = input("请输入邮箱:")
    ​
        # 2. 将用户信息保存到一个字典
        card_dict = {"name": name,
                     "phone": phone,
                     "qq": qq,
                     "email": email}
    ​
        # 3. 将用户字典添加到名片列表
        card_list.append(card_dict)
    ​
        print(card_list)
        
        # 4. 提示添加成功信息
        print("成功添加 %s 的名片" % card_dict["name"])
    ​

     

3.显示所有名片

若想显示所有名片,现在的情况是名片字典全部放到列表中,所以说我们可以直接把列表全部输出即可注意:为了有更好的显示效果,我们应该制作表头的分割线方便用户观看,则有如下代码

def show_all():
    """显示全部
    """
    print("-" * 50)
    print("功能:显示全部")
​
    # 打印表头
    for name in ["姓名", "电话", "QQ", "邮箱"]:
        print(name, end="\t\t")
​
    print("")
​
    # 打印分隔线
    print("=" * 50)
​
    for card_dict in card_list:
​
        print("%s\t\t%s\t\t%s\t\t%s" % (card_dict["name"],
                                        card_dict["phone"],
                                        card_dict["qq"],
                                        card_dict["email"]))

注意的是

 

print("\tPython")#\t表示空四个字符,也称缩进,相当于按一下Tab键
print("\nPython\nJAVA\nC++\nJavaScript\nC#")#\n表示换行,相当于按一下回车
print("languages:\n\tPython\n\tJAVA\n\tC++\n\tJavaScript\n\tC#")#\n\t表示换行加每行空四格

 若没有名片字典保存在列表里面,那么就有如下代码,这个代码放在上面代码的上方

def show_all():
    """显示全部
    """
    print("-" * 50)
    print("功能:显示全部")
​
    # 1. 判断是否有名片记录
    if len(card_list) == 0:
        print("提示:没有任何名片记录")
​
        return
​

return可以返回一个函数的结果

下方代码不会被执行 ,这样子就避免了后续操作,用户可以直接了解到,没有名片代码的记录,提示用户并且返回

4.查询名片

  1. 提示用户要搜索的姓名

  2. 根据用户输入的姓名遍历列表

  3. 搜索到指定的名片后,再执行后续的操作

def search_card():
​
    """搜索名片
    """
    print("-" * 50)
    print("功能:搜索名片")
​
    # 1. 提示要搜索的姓名
    find_name = input("请输入要搜索的姓名:")
​
    # 2. 遍历字典
    for card_dict in card_list:
​
        if card_dict["name"] == find_name:
​
            print("姓名\t\t\t电话\t\t\tQQ\t\t\t邮箱")
            print("-" * 40)
            
            print("%s\t\t\t%s\t\t\t%s\t\t\t%s" % (
                card_dict["name"],
                card_dict["phone"],
                card_dict["qq"],
                card_dict["email"]))
​
            print("-" * 40)
            
            # TODO(小明) 针对找到的字典进行后续操作:修改/删除
​
            break
    else:
        print("没有找到 %s" % find_name)
​

for遍历后不是通过break出来则执行else分支 


增加名片操作函数:修改/删除/返回主菜单

def deal_card(find_dict):
​
    """操作搜索到的名片字典
​
    :param find_dict:找到的名片字典
    """
    print(find_dict)
​
    action_str = input("请选择要执行的操作 "
                       "[1] 修改 [2] 删除 [0] 返回上级菜单")
​
    if action == "1":
        print("修改")
    elif action == "2":
        print("删除")
​

5.查询成功后修改删除名片

删除列表里面的字典即可

  • 由于找到的字典记录已经在列表中保存

  • 要删除名片记录,只需要把列表中对应的字典删除即可

    elif action == "2":
        card_list.remove(find_dict)
​
        print("删除成功")
  • 由于找到的字典记录已经在列表中保存

  • 要修改名片记录,只需要把列表中对应的字典中每一个键值对的数据修改即可

    if action == "1":
​
        find_dict["name"] = input("请输入姓名:")
        find_dict["phone"] = input("请输入电话:")
        find_dict["qq"] = input("请输入QQ:")
        find_dict["email"] = input("请输入邮件:")
​
        print("%s 的名片修改成功" % find_dict["name"])
​

如果用户在使用时,某些名片内容并不想修改,应该如何做呢?—— 既然系统提供的 input 函数不能满足需求,那么就新定义一个函数 input_card_info 对系统的 input 函数进行扩展

def input_card_info(dict_value, tip_message):
​
    """输入名片信息
​
    :param dict_value: 字典原有值
    :param tip_message: 输入提示信息
    :return: 如果输入,返回输入内容,否则返回字典原有值
    """
    # 1. 提示用户输入内容
    result_str = input(tip_message)
​
    # 2. 针对用户的输入进行判断,如果用户输入了内容,直接返回结果
    if len(result_str) > 0:
​
        return result_str
    # 3. 如果用户没有输入内容,返回 `字典中原有的值`
    else:
​
        return dict_value
​

 

 

6.让python程序直接运行

cards_input.py

def input_card_info(dict_value, tip_message):
 
    """输入名片信息
    :param dict_value: 字典中原有的值
    :param tip_message: 输入的提示文字
    :return: 如果用户输入了内容,就返回内容,否则返回字典中原有的值
    """
    # 1. 提示用户输入内容
    result_str = input(tip_message)
 
    # 2. 针对用户的输入进行判断,如果用户输入了内容,直接返回结果
    if len(result_str) > 0:
 
        return result_str
    # 3. 如果用户没有输入内容,返回 `字典中原有的值`
    else:
        return dict_value

cards_main.py

#!/usr/bin/python3
import cards_tools
 
while True:
 
    cards_tools.show_menu()
 
    action = input("请选择操作功能:")
 
    print("您选择的操作是:%s" % action)
 
    # 根据用户输入决定后续的操作
    if action in ["1", "2", "3"]:
 
        if action == "1":
            cards_tools.new_card()
 
        elif action == "2":
            cards_tools.show_all()
 
        elif action == "3":
            cards_tools.search_card()
 
    elif action == "0":
        print("欢迎再次使用【名片管理系统】")
 
        break
    else:
        print("输入错误,请重新输入:")

cards_tools.py

import cards_input
 
# 所有名片记录的列表
card_list = []
 
 
def show_menu():
 
    """显示菜单
    """
    print("*" * 50)
    print("欢迎使用【名片管理系统】V1.0")
    print("")
    print("1. 新建名片")
    print("2. 显示全部")
    print("3. 查询名片")
    print("")
    print("0. 退出系统")
    print("*" * 50)
 
 
def new_card():
 
    """新建名片
    """
    print("-" * 50)
    print("功能:新建名片")
 
    # 1. 提示用户输入名片信息
    name = input("请输入姓名:")
    phone = input("请输入电话:")
    qq = input("请输入 QQ 号码:")
    email = input("请输入邮箱:")
 
    # 2. 将用户信息保存到一个字典
    card_dict = {"name": name,
                 "phone": phone,
                 "qq": qq,
                 "email": email}
 
    # 3. 将用户字典添加到名片列表
    card_list.append(card_dict)
 
    # print(card_list)
 
    # 4. 提示添加成功信息
    print("成功添加 %s 的名片" % card_dict["name"])
 
 
def show_all():
 
    """显示全部
    """
    print("-" * 50)
    print("功能:显示全部")
 
    # 1. 判断是否有名片记录
    if len(card_list) == 0:
        print("提示:没有任何名片记录")
 
        return
 
    # 2. 显示所有名片
    print("姓名\t\t电话\t\tQQ\t\t邮箱")
    print("-" * 60)
 
    for card_dict in card_list:
        print("%s\t\t%s\t\t%s\t\t%s" % (
            card_dict["name"],
            card_dict["phone"],
            card_dict["qq"],
            card_dict["email"]))
 
    print("-" * 60)
 
 
def search_card():
 
    """搜索名片
    """
    print("-" * 50)
    print("功能:搜索名片")
 
    # 1. 提示要搜索的姓名
    find_name = input("请输入要搜索的姓名:")
 
    # 2. 遍历字典
    for card_dict in card_list:
 
        if card_dict["name"] == find_name:
 
            print("姓名\t\t电话\t\tQQ\t\t邮箱")
            print("-" * 60)
 
            print("%s\t\t%s\t\t%s\t\t%s" % (
                card_dict["name"],
                card_dict["phone"],
                card_dict["qq"],
                card_dict["email"]))
 
            print("-" * 60)
 
            deal_card(card_dict)
 
            break
    else:
        print("没有找到 %s" % find_name)
 
 
def deal_card(find_dict):
 
    """操作搜索到的名片字典
    :param find_dict:名片字典
    """
 
    action_str = input("请输入对名片的操作:1: 修改/ 2: 删除/ 0: 返回上级菜单")
 
    if action_str == "1":
 
        find_dict["name"] = cards_input.input_card_info(find_dict["name"],
                                                        "请输入姓名[回车不修改]:")
        find_dict["phone"] = cards_input.input_card_info(find_dict["phone"],
                                                         "请输入电话[回车不修改]:")
        find_dict["qq"] = cards_input.input_card_info(find_dict["qq"],
                                                      "请输入QQ[回车不修改]:")
        find_dict["email"] = cards_input.input_card_info(find_dict["email"],
                                                         "请输入邮箱[回车不修改]:")
 
        print("%s 的名片修改成功!" % find_dict["name"])
    elif action_str == "2":
 
        card_list.remove(find_dict)
 
        print("删除名片成功!")

 

 

 

  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
《ROS 2机器人编程实战——基于现代C++和Python 3》配套代码及相关内容维护 C++是一种广泛使用的编程语言,它是由Bjarne Stroustrup于1979年在新泽西州美利山贝尔实验室开始设计开发的。C++是C语言的扩展,旨在提供更强大的编程能力,包括面向对象编程和泛型编程的支持。C++支持数据封装、继承和多态等面向对象编程的特性和泛型编程的模板,以及丰富的标准库,提供了大量的数据结构和算法,极大地提高了开发效率。12 C++是一种静态类型的、编译式的、通用的、大小写敏感的编程语言,它综合了高级语言和低级语言的特点。C++的语法与C语言非常相似,但增加了许多面向对象编程的特性,如类、对象、封装、继承和多态等。这使得C++既保持了C语言的低级特性,如直接访问硬件的能力,又提供了高级语言的特性,如数据封装和代码重用。13 C++的应用领域非常广泛,包括但不限于教育、系统开发、游戏开发、嵌入式系统、工业和商业应用、科研和高性能计算等领域。在教育领域,C++因其结构化和面向对象的特性,常被选为计算机科学和工程专业的入门编程语言。在系统开发领域,C++因其高效性和灵活性,经常被作为开发语言。游戏开发领域中,C++由于其高效性和广泛应用,在开发高性能游戏和游戏引擎中扮演着重要角色。在嵌入式系统领域,C++的高效和灵活性使其成为理想选择。此外,C++还广泛应用于桌面应用、Web浏览器、操作系统、编译器、媒体应用程序、数据库引擎、医疗工程和机器人等领域。16 学习C++的关键是理解其核心概念和编程风格,而不是过于深入技术细节。C++支持多种编程风格,每种风格都能有效地保证运行时间效率和空间效率。因此,无论是初学者还是经验丰富的程序员,都可以通过C++来设计和实现新系统或维护旧系统。3
### 回答1: 电影推荐系统是一种基于用户兴趣和行为数据的算法系统,它利用机器学习和数据挖掘等技术,分析用户的历史观影记录、评分和偏好,为用户推荐最适合他们的电影。 在Python项目实训中,我们可以使用Python编程语言和相关的库和工具,去构建一个电影推荐系统。首先,我们需要收集和整理电影数据集,包括电影的名称、分类、导演、演员、评分等信息。我们可以通过一些公开的电影数据库或者API来获取这些数据。 接下来,我们可以使用Python中的机器学习库(如scikit-learn)或深度学习库(如Tensorflow)来构建一个协同过滤推荐模型。协同过滤是一种常用的方法,它基于用户的行为数据,比如用户的历史观影记录和评分,来计算用户的电影相似性,并且根据其他用户的评分和观影记录,为用户生成个性化的电影推荐。 通过对电影数据进行特征工程和处理,我们可以使用Python的数据处理库(如pandas)来处理和清洗数据。然后,我们可以使用Python的数据可视化库(如matplotlib和seaborn)来对电影数据进行可视化分析,从而更好地理解数据的分布和规律。 最后,我们可以使用Python的Web开发框架(如Django)来构建一个用户交互界面,用户可以输入自己的偏好和历史观影记录,系统将根据这些信息提供个性化的电影推荐结果。 通过Python项目实训,我们可以学习和实践推荐系统的建模和算法。同时,我们也可以学习和应用Python在数据处理、可视化和Web开发等方面的能力,这对于我们日后的职业发展非常有帮助。 ### 回答2: 电影推荐系统是一种利用机器学习和数据分析技术来为用户提供个性化电影推荐的应用程序。Python项目实训中,我们可以通过以下步骤来开发电影推荐系统。 首先,我们需要收集和准备电影数据集。可以从公开数据集或者电影数据库中获取电影信息,如电影名称、类型、导演、演员和用户评分等。将这些数据导入到Python环境中进行分析和处理。 接下来,我们可以使用机器学习技术来建立推荐算法模型。常见的推荐算法包括协同过滤、基于内容的推荐和深度学习等。可以使用Python库如scikit-learn或者Keras来实现这些算法。 在建立推荐模型之后,我们可以利用该模型为用户生成个性化推荐列表。根据用户的历史行为和偏好,系统可以分析相似用户或者相似电影,并推荐用户可能喜欢的电影。可以使用Python的pandas和numpy库来对数据进行处理和计算。 最后,我们还可以通过用户反馈和评价对推荐系统进行评估和优化。根据用户的反馈,可以调整推荐算法的参数或者引入其他技术来提高推荐的准确性和用户满意度。 总结来说,Python项目实训中的电影推荐系统主要包括数据收集、数据处理、推荐算法建模和用户反馈评估等步骤。通过Python的机器学习和数据分析技术,可以开发出一个个性化、准确度高的电影推荐系统。 ### 回答3: 电影推荐系统是基于Python语言进行开发的一个项目实训项目。该系统的主要目的是根据用户的喜好和观影记录,推荐符合用户口味的电影。 在实现该系统时,首先需要收集电影的相关数据。可以使用爬虫技术从互联网上获取电影的信息,比如电影的名称、导演、演员、类型、时长、评分等。获取到的数据可以存储在数据库中,以便后续使用。 接下来,需要设计一个算法来进行电影的推荐。常用的算法有基于内容的推荐算法和协同过滤推荐算法。基于内容的推荐算法是根据电影的特征,比如类型、导演、演员等,来推荐类似的电影给用户。而协同过滤推荐算法是根据用户的观影历史和其他用户的行为数据,找出相似的用户,并将相似用户喜欢的电影推荐给当前用户。 在系统实现过程中,还可以考虑引入机器学习的算法,比如深度学习和自然语言处理等技术,来提升推荐的准确性和个性化程度。 最后,在界面设计方面,可以使用Python的GUI库,比如Tkinter或PyQt等,来实现一个友好的用户界面,使用户能够方便地输入自己的喜好和查看系统推荐的电影。 该项目的实施可以考虑以下步骤:需求分析、数据库设计、数据采集、算法选择与实现、界面设计与实现、系统测试与调试等。 通过这个项目实训,可以提高学生的Python编程能力,了解数据获取和处理的方法,熟悉算法的选择和实现,掌握界面设计和用户交互的技术,培养系统分析和设计的能力,进一步提升学生的综合实践能力。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雪碧有白泡泡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值