版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_39591494/article/details/82719098
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import sys
import pickle
import time
import os
from color_me import ColorMe
__author__ = "YanZanG"
init = ["系统提示:此信息为初始化信息,默认会有一条数据, 请忽略........"]
class Memo(object):
"""备忘录类"""
def __init__(self, name, thing, date, time, id):
self.name = name
self.thing = thing
self.date = date
self.time = time
self._id = id
@property
def id(self):
return self._id
@id.setter
def id(self, id):
"获取id值,每次在原有基础+1"
if not isinstance(restart, str):
raise ValueError('restart must be an integer!')
self._id = id
def welcome(self):
"欢迎词儿"
print(f"Welcome to the {__author__} applet.".center(60,"-"))
class MemoAdmin(object):
"处理备忘录主程序"
def __init__(self):
self.user_list = []
def user_add(self):
"备忘录添加信息函数"
count = True
while (count):
Your_title = input("请您输入备忘录标题:".strip())
Your_event = input("请您输入备忘录事件:".strip())
Your_date = input("请您输入备忘录用时时间:".strip())
time1 = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
if Your_title == "":
print("标题不能为空!!!")
elif Your_event == "":
print("备忘录事件不能为空")
elif Your_date == "":
print("备忘录用时不能为空")
else:
self.create(Your_title, Your_event, Your_date, time1)
count = False
def create(self,Your_title, Your_event, Your_date, time1):
"备忘录创建并输出数据"
memo = Memo(Your_title, Your_event, Your_date, time1, self.count())
user_result = (f"ID:{memo.id}、标题:{Your_title}、事件:{Your_event}、用时时间:{Your_date}、创建时间 : {time1}")
self.user_list.append(user_result)
self.save()
def user_delete(self):
"删除备忘录函数--->某一条信息"
if os.path.isfile("db.pkl"):
user_delete = int(input("请您输入您需要删除的id号:".strip()))
with open('db.pkl', 'rb') as f:
data = pickle.load(f)
data.pop(user_delete)
self.user_list = []
for a in data:
self.user_list.append(a)
self.save()
else:
print("nonono")
def user_search(self):
"查找备忘录信息--->使用ID号查找"
search_result = int(input("请您输入您需要查找的ID:".strip()))
if os.path.isfile("db.pkl"):
with open('db.pkl', 'rb') as f:
data = pickle.load(f)
print(data[search_result])
else:
search_result = ColorMe("没有备忘录信息,请您选择添加备忘录并创建").red()
print(search_result)
def save(self):
"保存备忘录信息--->db.pkl"
with open('db.pkl', 'wb') as f:
pickle.dump(self.user_list, f)
save_result = ColorMe(f"您当前一共有{len(self.user_list)}条备忘录信息").green()
print(save_result)
def load(self):
"加载备忘录数据,并输出结果。"
if os.path.isfile("db.pkl"):
with open('db.pkl', 'rb') as f:
data = pickle.load(f)
load_welcome = ColorMe("备忘录信息,数据如下:".center(60, "-")).green()
print(load_welcome)
for line in data:
print(line)
else:
load_warning = ColorMe("没有备忘录文件,请你添加并创建").red()
print(load_warning)
def count(self):
"获取ID值"
with open('db.pkl', 'rb') as f:
data = pickle.load(f)
result = len(data)
return result
def exit(self):
"退出备忘录程序"
save_Tips = ColorMe("欢迎你再次使用,再见......".center(60,"-")).green()
print(save_Tips)
sys.exit()
def delete(self):
"删除备忘录信息--->db.pkl"
if os.path.isfile("db.pkl"):
os.remove("db.pkl")
delete_success = ColorMe("恭喜您,清除备忘录成功!!!").green()
print(delete_success)
else:
delete_warning = ColorMe("没有备忘录文件,请你添加并创建").red()
print(delete_warning)
def user_input(self):
"用户输入主入口函数--->通过反射获取self.方法"
print(f"Welcome to the {__author__} memo applet.".center(60,"-"))
user_menu = {
"1" : "添加备忘录数据",
"2" : "删除备忘录数据",
"3" : "查找备忘录数据",
"P" : "查看备忘录数据",
"D" : "清空备忘录数据",
"Q" : "退出备忘录数据"
}
user_menu2 = {
"1" : "user_add",
"2" : "user_delete",
"3" : "user_search",
"P" : "load",
"D" : "delete",
"Q" : "exit"
}
if os.path.isfile("db.pkl"):
with open('db.pkl', 'rb') as f:
data = pickle.load(f)
for a in data:
self.user_list.append(a)
Os_Tips_result = ColorMe(f"系统提示,初始备忘录信息成功,目前一共有{len(self.user_list)}条数据").green()
print(Os_Tips_result)
else:
with open('db.pkl', 'wb') as f:
C = ColorMe("系统提示:备忘录程序初始化完毕,请再次打开.....").green()
print(C)
pickle.dump(init, f)
sys.exit()
try:
count = True
while (count):
for k, v in user_menu.items():
print(f"""
{k}、{v}
""")
User_choice = input("请您输入选项:".strip()).upper()
if User_choice.strip() == "":
error_warning = ColorMe("请您输入正确的数值!!!").red()
print(error_warning)
elif User_choice == "Q":
count = False
else:
if hasattr(self,user_menu2.get(User_choice)):
func = getattr(self,user_menu2.get(User_choice))
func()
else:
error_warning2 = ColorMe("系统检测错误,请您输入正确的选项").red()
print(error_warning2)
except Exception as f:
print(f)
# TODO([email protected]) 转换器-----> 2018年9月14日
class Money_conversion(object):
"金钱转换类"
def __init__(self):
self.rmb = "元"
self.dollars = "$"
def currency_result(self, user_curr):
"人民币及美元转换程序"
your_money = int(user_curr)
rmb = your_money / 6.6
rmb = round(rmb, 2)
Conversion_results = (f"您需要转换的人民币为{user_curr}元 转换为美元结果为:{rmb}$(按q退出!!!)")
print(Conversion_results)
def dollar_result(self, user_curr):
your_money = int(user_curr)
Conversion_results = (f"您需要转换的美元为{user_curr}$ 转换为人民币结果为:{your_money * 6.6}元(按q退出!!!)")
print(Conversion_results)
def currency(self):
"判断用户输入人民币结尾"
while True:
user_curr = input("输入金额(元):")
return self.currency_result(user_curr)
def dollar(self):
"判断用户输入美元结尾"
while True:
user_curr = input("输入金额($):")
return self.dollar_result(user_curr)
def user_input(self):
"用户输入程序,提供用户选择输入"
user_data = {
"1" : "人民币转美元",
"2" : "美元转人民币",
"Q" : "退出此程序"
}
user_data2 = {
"1" : "currency",
"2" : "dollar",
}
count = True
while (count):
Tips = ColorMe("温馨提示:使用转换时人民币以:(元)结尾,美元为($)结尾".center(50,"-")).green()
print(Tips)
for k, v in user_data.items():
print(f"{k}、{v}")
user_input = input("请您输入您需要的转换业务:".strip()).upper()
if user_input.strip() == "":
print("输入非法,请您重新输入")
elif user_input == "Q":
count = False
else:
if hasattr(self, user_data2.get(user_input)):
func = getattr(self, user_data2.get(user_input))
func()
else:
print("nnnnnnnnnnnn")
# TODO([email protected]) 天气-----> 2018年9月15日
class Weather_conversion(object):
"天气转换类"
def __init__(self):
self.Centigrade = "℃"
self.Fahrenheit = "℉"
def temper_result(self, user_curr):
"摄氏温度转华氏温度"
temper_result = int(user_curr)
Calculation_result = (temper_result * 1.8 + 32)
print(f"您输入的摄氏度为:{temper_result}{self.Centigrade} 转换为华氏温度为{Calculation_result}{self.Fahrenheit}")
def overturn_temper_result(self, user_curr):
"华氏温度转摄氏温度"
overturn_result = int(user_curr)
Fahrenheit_result = (overturn_result / 1.8 - 32)
air = round(Fahrenheit_result, 2)
print(f"您输入的华氏温度为:{overturn_result}{self.Fahrenheit} 转换为摄氏温度为{air}{self.Centigrade}")
def temper(self):
"天气摄氏温度转换函数"
while True:
user_curr = input("输入需要转换的摄氏温度(℃):").upper()
return self.temper_result(user_curr)
def overturn_temper(self):
"天气摄氏温度转换函数"
while True:
user_curr = input("输入需要转换的华氏温度(℉):").upper()
return self.overturn_temper_result(user_curr)
def user_input(self):
"天气程序主入口,可提供用户选择菜单"
user_data = {
"1" : "摄氏温度转华氏温度",
"2" : "华氏温度转摄氏温度",
"Q" : "退出此程序"
}
user_data2 = {
"1" : "temper",
"2" : "overturn_temper",
}
count = True
while (count):
Tips = ColorMe("温馨提示:使用转换时摄氏温度以:(C)结尾,华氏温度(F)结尾".center(50, "-")).green()
print(Tips)
for k, v in user_data.items():
print(f"{k}、{v}")
user_input = input("请您输入您需要的转换业务:".strip()).upper()
if user_input.strip() == "":
warning = ColorMe("输入非法,请您重新输入").red()
print(warning)
elif user_input == "Q":
print("退出天气转换成功!!!")
count = False
else:
if hasattr(self, user_data2.get(user_input)):
func = getattr(self, user_data2.get(user_input))
func()
def menu():
"此程序主程序入口 提供用户选择需要的业务并,调用类中的方法。"
count = True
while (count):
menu = {
"1" : "进入备忘录程序",
"2" : "进入金钱转换程序",
"3" : "进入天气转换程序",
"Q" : "退出此程序"
}
user_choice = ColorMe("请您选择相关的业务!!!".center(60, "-")).green()
print(user_choice)
for k, v in menu.items():
print(f"{k}、{v}")
user_menu = input("请您输入:".strip()).upper()
if user_menu == "1":
Admin = MemoAdmin()
Admin.user_input()
elif user_menu == "2":
Money = Money_conversion()
Money.user_input()
elif user_menu == "3":
weather = Weather_conversion()
weather.user_input()
elif user_menu == "Q":
menu_result = ColorMe("欢迎您再次使用,再见~").green()
print(menu_result)
sys.exit()
else:
warning_result = ColorMe("输入非法,请您重新输入!!!").red()
print(warning_result)
count = True
if __name__ == '__main__':
menu()
Color_me:
#!/usr/bin/env Python
#-*- coding:utf-8 -*-
__author__ = 'De8ug'
class ColorMe:
"""
give me color see see...
实际用起来很简单:
ColorMe('somestr').blue()
"""
def __init__(self, some_str):
self.color_str = some_str
def blue(self):
str_list = ["\033[34;1m", self.color_str, "\033[0m"]
return ''.join(str_list) # "\033[34;1m" + self.color_str + "\033[0m"
def green(self):
str_list = ["\033[32;1m", self.color_str, "\033[0m"]
return ''.join(str_list) # "\033[34;1m" + self.color_str + "\033[0m"
def yellow(self):
str_list = ["\033[33;1m", self.color_str, "\033[0m"]
return ''.join(str_list) # "\033[34;1m" + self.color_str + "\033[0m"
def red(self):
str_list = ["\033[31;1m", self.color_str, "\033[0m"]
return ''.join(str_list) # "\033[34;1m" + self.color_str + "\033[0m"
def main():
ColorMe('somestr').blue()
if __name__ == '__main__':
main()