生词本

背单词是英语学习中最基础的一环,不少学生在背诵单词的过程中会整理自己的生词本,以不断拓展自己的词汇量。本实例要求编写生词本程序,该程序需具备以下功能。

(1)查看生词列表功能:输出生词本中全部的单词;若生词本中没有单词,则提示“生词本内容为空”。

(2)背单词功能:从生词列表中取出一个单词,要求用户输入相应的翻译,输入正确提示“太棒了”,输入错误提示“再想想”。

(3)添加新单词功能:用户分别输入新单词和翻译,输入完成后展示添加的新单词和翻译,并提示用户“单词添加成功”。若用户输入的单词已经存在于生词本中,提示“此单词已存在”。

(4)删除单词功能:展示生词列表,用户输入单词以选择要删除的生词,若输入的单词不存在提示“删除的单词不存在”,生词删除后提示“删除成功”。

(5)清空生词本功能:查询生词列表,若列表为空提示“生词本内容为空”,否则清空生词本中的全部单词,并输出提示信息“生词本已清空”。

(6)退出生词本功能:退出生词本。

任务目标

熟练地创建集合

掌握集合的基本操作,能添加、删除、查看、清空集合元素

实例分析

本实例的生词本主要用于保存多个单词及其翻译,其中的单词与翻译是互相对应的,且单词是不能重复的,因此这里可将每组单词与翻译视为一个字典,将生词本视为包含多个单词的集合。但集合中存储的元素必须是可哈希类型的,其中不能包含字典,这时需要将字典转换为字符串之后再添加到集合中。

生词本具有5个功能,分别是查看生词本、背单词、添加新单词、删除单词和清空生词本。其中背单词的功能相当于遍历集合元素的操作,添加新单词的功能相当于往集合中添加元素的操作,删除单词和清空生词本的功能相当于删除和清空集合元素的操作。

代码

# 定义一个集合,用于保存生词本中的单词
vocabulary = set()# 查看生词列表
def view_vocabulary():if len(vocabulary) == 0:print("生词本内容为空")else:print(vocabulary)# 背单词
def memorize_word():if not vocabulary:  # 如果生词本为空print("生词本为空,请先添加单词")returnfor item in vocabulary:word, meaning = itemanswer = input("请输入%s的翻译:" % word)while True:if answer == meaning:print("太棒了,回答正确")breakelse:answer = input("再想想,请重新输入:")# 添加新单词
def add_word():word = input("请输入新单词:")meaning = input("请输入单词翻译:")if word in vocabulary:print("此单词已存在")else:vocabulary.add((word, meaning))print("单词添加成功")print("%s: %s" % (word, meaning))# 删除单词
def delete_word():view_vocabulary()word = input("请输入要删除的单词:")for item in vocabulary:if item[0] == word:vocabulary.remove(item)print("删除成功")breakelse:print("删除的单词不存在")# 清空生词本
def clear_vocabulary():if len(vocabulary) == 0:print("生词本内容为空")else:vocabulary.clear()print("生词本清空成功")# 主程序
print("====================")
print("欢迎使用生词本")
print("1.查看生词本")
print("2.背单词")
print("3.添加新单词")
print("4.删除单词")
print("5.清空生词本")
print("6.退出生词本")
print("====================")
while True:choice = input("请输入功能编号:")if choice == "1":view_vocabulary()elif choice == "2":memorize_word()elif choice == "3":add_word()elif choice == "4":delete_word()elif choice == "5":clear_vocabulary()elif choice == "6":breakelse:print("输入错误,请重新输入")

运行结果

====================
欢迎使用生词本
1.查看生词本
2.背单词
3.添加新单词
4.删除单词
5.清空生词本
6.退出生词本
====================
请输入功能编号:3
请输入新单词:Kevin
请输入单词翻译:凯文
单词添加成功
Kevin: 凯文
请输入功能编号:3
请输入新单词:Elysia
请输入单词翻译:爱莉希雅
单词添加成功
Elysia: 爱莉希雅
请输入功能编号:1
{('Elysia', '爱莉希雅'), ('Kevin', '凯文')}
请输入功能编号:2
请输入Elysia的翻译:凯文
再想想,请重新输入:爱莉希雅
太棒了,回答正确
请输入Kevin的翻译:凯文
太棒了,回答正确
请输入功能编号:4
{('Elysia', '爱莉希雅'), ('Kevin', '凯文')}
请输入要删除的单词:Kevin
删除成功
请输入功能编号:1
{('Elysia', '爱莉希雅')}
请输入功能编号:5
生词本清空成功
请输入功能编号:6Process finished with exit code 0

【Python】生词本 (集合 增、删、查)相关推荐

  1. 基于python的SQLite数据库增删改查

    与其他数据库管理系统不同,SQLite不是一个客户端/服务器结构的数据库引擎,而是一种嵌入式数据库,他的数据库就是一个文件.SQLite将整个数据库,包括定义.表.索引以及数据本身,作为一个单独的.可 ...

  2. python+sqlite3-数据库增删改查操作

    python+sqlite3-数据库增删改查操作 目录 python+sqlite3-数据库增删改查操作 01.sqlite数据库 02.下载数据库可视化工具 03.创建数据库 04.python连接 ...

  3. python操作mysql的增删改查_详解使用pymysql在python中对mysql的增删改查操作(综合)...

    这一次将使用pymysql来进行一次对MySQL的增删改查的全部操作,相当于对前五次的总结: 先查阅数据库: 现在编写源码进行增删改查操作,源码为: #!/usr/bin/python #coding ...

  4. DAY4(python)打印字符串以及增删改查

    用while循环打印字符串 #if i in s: # print ( i ) s='nanfjkhndaol' index = 0 while 1 : print (s[index]) index+ ...

  5. java 增 删 查 改_如何对java链表进行增、删、查、改操作

    如何对java链表进行增.删.查.改操作 发布时间:2020-06-23 10:41:33 来源:亿速云 阅读:79 作者:Leah 如何对java链表进行增.删.查.改操作?针对这个问题,今天小编总 ...

  6. python学生信息管理系统-增删改查-根据姓名查询

    学生信息管理系统 增删改查,求平均年龄,退出系统,根据姓名查询 def show_menu():print('*******欢迎使用学生管理系统*************')print('****** ...

  7. Python数据类型、列表、元组、字典、集合增删改查(切片)

    Python基础(数据类型) 有问题可以➕QQ:1606269318来交流沟通. 以下全是干货,对刚学Python是挺有帮助的. 1.Numbers(数字): 1)整数(int) 通常被称为是整型或整 ...

  8. Python 操作 Elasticsearch 实现 增 删 改 查

    Github 地址:https://github.com/elastic/elasticsearch-py/blob/master/docs/index.rst 官网地址:https://elasti ...

  9. python中字典的增删改查及其他常用操作

    本文原创,版权属作者个人所有,如需转载请联系作者本人.Q&微:155122733 ------------------------------------------------------- ...

  10. python基础-字典的增删改查

    字典 字典的创建方式: # 方式一: dict1 = dict((("one", 1), ("two", 2), ("three", 3)) ...

最新文章

  1. 快来领60 本书!涵盖 Linux、Spring Boot、Python、MongoDB、Hadoop等!免费包邮!
  2. KPROCESS 结构体属性介绍
  3. adas技术实现途径_未来实现100%清洁电力的途径,带来巨大的健康和工作
  4. 计算机cup容量有什么作用,电脑的cpu和内存条都起什么作用
  5. @Value(${xxxx})注解的配置及使用
  6. 第一章:1-01、计算机网络的发展可划分为几个阶段?每个阶段各有何特点?
  7. python伪造邮件发件地址_Python:向多个地址发送电子邮件
  8. [转载]C#深拷贝的方法
  9. 网页滚动条向下拉动奇慢的原因
  10. python使用相对路径创建文件夹
  11. axis2调用webservice
  12. 数据结构——第十章 排序
  13. Cisco路由器配置命令
  14. Lomboz插件的使用
  15. 为什么Linux的fdisk分区时第一块磁盘分区的First Sector是2048?
  16. 【Python】使用日历热图进行时序数据可视化
  17. 解救IP被封的服务器
  18. DHCP+DHCP中继
  19. 双机热备和磁盘阵列柜
  20. 【推荐】2022年区块链行业研究报告投资策略产业发展前景市场行情分析(附件中为网盘地址,报告持续更新)

热门文章

  1. 机器学习-准备 scikit-learn-Orange安装
  2. 网关怎么买?是选小米智能多模网关?还是Aqara网关呢?
  3. 关于最新版本listen1 (2.1.6)的修改心得(添加下载功能)
  4. 51单片机入坑仪式 芯片STC89C52RC-40I LQFP-44启动学习项目
  5. Queue:愿你历尽千帆,归来仍是少年!
  6. 微信小程序:爱情保证书制作生成
  7. erlang调试方法
  8. Banner竖向轮播实现
  9. 汽车悬挂系统的基本原理和构成
  10. Java面试题大全(总结)