用Python名片管理系统并且进行打印字体颜色进行调整
第一次在CSDN发表文章,学习了一点点Python的基础应用,希望能和广大码友交流学习,提升个人的不足,学习到更多代码知识。
print打印出具有颜色信息的字符
使用方法与介绍
这里是引用:终端的字符颜色是用转义序列控制的,是文本模式下的系统显示功能,和具体的语言无关。
转义序列是以ESC开头,即用\033来完成(ESC的ASCII码用十进制表示是27,用八进制表示就是033)。
终端的字符颜色是用转义序列控制的,是文本模式下的系统显示功能,和具体的语言无关。
转义序列是以ESC开头,即用\033来完成(ESC的ASCII码用十进制表示是27,用八进制表示就是033)。
代码如下
print("\033[0:31:40m需要打印的字体\033[0m")
print("\033[0:31:40m需要打印的字体")
print("\033[1:31:40m需要打印的字体\033[0m")
展示如图
学习总结
print("\033[a:b:cm输入的字体\033]0")
a,b,c的参数位置可以随意调整,m为字体输入开始字符,
m前的值为字体颜色(30~37),其他两个可以省略,
数值只需记得三组数据即可:
第一组是显示方式: 0(默认)、1(高亮)、22(非粗体)、
4(下划线)、24(非下划线)、 5(闪烁)、25(非闪烁)、7(反显)、27(非反显)
第二组是字体颜色(30~37):30(黑色)、31(红色)、32(绿色)、
33(黄色)、34(蓝色)、35(洋 红)、36(青色)、37(白色)
第三组是字体的背景颜色(40~47,就是在字体颜色的8进制上在最高位上+1):
40(黑色)、41(红色)、42(绿色)、 43(黄色)、44(蓝色)、45(洋 红)、46(青色)、47(白色)
名片管理系统的编写
思维导图
主要使用字典以及列表的相关知识,将一组信息放入在设定好的字典中,每一个录入信息对于字典中的一组key-value,我设定的是一个字典内包含了4组信息(name、sex、number、QQ)。之后将字典{}放入到列表]\中存储,每个单位的信息不会相互影响[{A},{B},{C}、、、、]。在读取中通过for循环读取。
创建了两个.py文件,一个用来主程序(card_all.py)的运行,另一个(card_def.py)包含我所有使用的函数,降低代码的编写难度,避免造成混乱。
程序运行如图
功能菜单
新建名片
显示功能
查询功能
主程序
根据预设的功能选择编写好的函数。通过import导入函数并设定其为d,通过简单的if-elif-else来进行输入判断并且进入相应的环节中。并且通过测试得到我们想要的字体颜色。
import card_def as d
while True:
d.card_menu()
num=int(input("\033[1:35m输入要进行的操作:\033[0m"))
if num==0:
break
elif num==1:
d.creat_card()
elif num==2:
d.show_card()
elif num==3:
d.search_card()
else:
print("\033[1:31m输入有误重新输入\033[0m")
print("\033[1:35m欢迎使用本系统\033[0m")
函数块文件
card_list=[]
def card_menu():#功能菜单函数
print("\033[35m*\033[0m"*50)
print("\033[1:35m欢迎使用名片管理系统\033[0m")
print("\033[35m1.新建名片\033[0m")
print("\033[35m2.显示名片\033[0m")
print("\033[35m3.查询名片\033[0m")
print("\033[35m0.退出\033[0m")
print("\033[35m*\033[0m"*50)
#card_menu()
def creat_card():#新建功能函数
print("\033[35m*\033[0m"*50)
print("\033[1:35m功能:新建名片\033[0m")
name=input("\033[35m输入姓名:\033[0m")
sex=input("\033[35m输入性别:\033[0m")
number=input("\033[35m输入电话:\033[0m")
qq=input("\033[35m输入QQ:\033[0m")
card_dict={"name":name,"sex":sex,"number":number,"qq":qq}
card_list.append(card_dict)
#print(card_dict)
#print(card_list)
print("\033[35m[%s]的名片添加成功\033[0m"%name)
print("\033[35m*\033[0m" * 50)
#creat_card()
def show_card():#展示功能函数
print("\033[35m*\033[0m" * 50)
print("\033[1:35m功能:显示所有名片\033[0m")
if card_list:
print("\033[35mname\t\t\t","sex\t\t\t","number\t\t\t","qq\t\t\t")
print("\033[35m*\033[0m" * 50)
for card_dict in card_list:
for key in card_dict:
print("\033[35m%s"%card_dict[key],end="\t\t\t\t")
print()
else:
print("\033[45m没有名片\033[0m")
print("\033[35m*\033[0m" * 50)
#show_card()
def search_card():#查询功能函数
black="\t\t\t\t"
print("\033[35m*\033[0m" * 50)
print("\033[1:35m功能:查找信息\033[0m")
name=input("\033[35m输入查找姓名:\033[0m")
for card_dict in card_list:
for key in card_dict:
if card_dict["name"]==name:
print("\033[1:35mname\t\t","sex\t\t\t","phone\t\t\t","qq\t\t")
print("\033[35m=\033[0m" * 50)
#print(,end="\t")
s=card_dict["name"]+black+card_dict["sex"]+black+card_dict["number"]+black+card_dict["qq"]
print("\033[1:35m%s\033[0m"%s)
print("\033[35m=\033[0m" * 50)
deal_card(card_dict)
return
print("\033[1:31m用户不存在")
def deal_card(card_dict):#更改以及删除功能菜单
num=int(input("\033[1:35m输入对名片的操作.\n1:修改\t2:删除\t0:返回上级菜单\n\033[0m"),)
if num==1:
print("\033[35m-----更改名片功能------\033[0m")
update_card(card_dict)
elif num==2:
print("\033[35m-----删除名片功能-----\033[0m")
delete_card(card_dict)
elif num==0:
return
else:
print("\033[1:31m输入错误,重新输入\033[0m")
deal_card(card_dict)
def update_card(card_dict):#更新功能函数
name=input("\033[35m请输入修改后的名字:\033[0m")
sex=input("\033[35m请输入修改后的性别:\033[0m")
number=input("\033[35m请输入修改后的电话:\033[0m")
qq=input("\033[35m请输入修改后的qq:\033[0m")
if name:
card_dict["name"]=name
if sex:
card_dict["sex"]=sex
if number:
card_dict["number"]=number
if qq:
card_dict["qq"]=qq
print("\033[1:31m修改成功")
def delete_card(card_dict):#删除功能展示
answer=input("\033[1:31m是否确定删除y/n\n")
if answer=='y' or 'Y':
card_list.remove(card_dict)
print("\033[1:31m删除成功\033[0m")
elif answer=='N'or'n':
return
else:
print("\033[1:31m您输入的有错误,重新输入\033[0m")
deal_card(card_dict)
编写中所遇到的问题以及解决
1、在函数文件中要新建空的列表,card_list=[],在新建名片功能中,我们将一个人的四组key-value信息放入在一个字典中,再将其放入在一个列表中,这个列表是全局变量,在整个程序都需要其提供或者输入信息。
2、在更改以及删除名片功能菜单中,出现了return,在理解这个return上出现了问题,通过其他大佬发表的文章中得知,这个return相当于返回一个空值,退出当前的函数。
3、在展示与查询功能中对循环嵌套进行了学习。
for card_dict in card_list:
for key in card_dict:
在第一个for中card_dict只是一个name,可以随意修改,将列表中的每一组字典进行赋名,名字就为card_dict,在第二个for中为同一个数据。第二个for中的key就是针对每一个字典内的key进行读取,并且赋予给key,在之后的循环中通过字典输出的方法输出value即可。
打印字体变色学习地址