基于所学创建的第二个项目
·
#使用class类
class Data:
#默认初始化加上后续要输入的数据
def __init__(self,year=2026,month=1,day=1,hour=00,minute=00):
self.year = year
self.month= month
self.day= day
self.hour= hour
self.minute= minute
def SetYear(self):
#修改年份(增加基础校验)
self.year = int(input("请输入修改后的年份:"))
while True:
self.month = int(input("请输入修改后的月份:"))
if 1 <= self.month <= 12:
break
print("月份必须在 1-12 之间,请重新输入。")
# 修改日期,用循环保证输入合法
while True:
self.day = int(input("请输入修改后的日期:"))
# 简单校验:1到31,暂不区分月份
if 1 <= self.day <= 31:
break
print("日期必须在 1-31 之间,请重新输入。")
while True:
# 简单校验:时间00:00-23:59之间
self.hour = int(input("请输入修改后的时钟值:"))
if 0 <= self.hour <= 23:
break
print("时钟值必须在 0-23 之间,请重新输入。")
while True:
# 简单校验:分钟00-59之间
self.minute = int(input("请输入修改后的分钟值:"))
if 0 <= self.minute <= 59:
break
print("分钟值必须在 0-59 之间,请重新输入。")
return self.year, self.month, self.day, self.hour, self.minute
def MytData(self):
print(f"原数据为:{self.year}年{self.month}月{self.day}日{self.hour}时{self.minute}分")
def SetShow(self):
print(f"修改后:{self.year}年{self.month}月{self.day}日{self.hour}时{self.minute}分")
def NoSetShow(self):
print(f"未修改:{self.year}年{self.month}月{self.day}日{self.hour}时{self.minute}分")
#更改后的数据,初始化d1的数据,并使用初始化后的数据打印出来
d1 = Data()
d1.MytData()
print("您要修改数据吗?")
revise = input("'yes' 或 'no'?\n")
#将里面的判断包装成类函数
while True:
if revise == "yes":
d1.SetYear()
d1.SetShow()
break
elif revise == "no":
d1.NoSetShow()
break
else:
print("输入错误,请输入 'yes' 或 'no'。")
revise = input("'yes' 或 'no'?\n")
这是个人写的,和DeepSeek优化后感觉只有增加了闰年判断和名称修改
# 每月最大天数(先不考虑闰年)
MAX_DAYS = {
1: 31, 2: 28, 3: 31, 4: 30, 5: 31, 6: 30,
7: 31, 8: 31, 9: 30, 10: 31, 11: 30, 12: 31
}
class Data:
"""日期时间数据类,用于存储和修改年月日时分"""
def __init__(self, year=2026, month=1, day=1, hour=0, minute=0):
self.year = year
self.month = month
self.day = day
self.hour = hour
self.minute = minute
def update_all(self):
"""修改所有字段,带完整校验"""
# 修改年份
self.year = int(input("请输入修改后的年份:"))
# 修改月份(循环保证输入合法)
while True:
self.month = int(input("请输入修改后的月份:"))
if 1 <= self.month <= 12:
break
print("月份必须在 1-12 之间,请重新输入。")
# 判断闰年,调整2月天数
year = self.year
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
MAX_DAYS[2] = 29
else:
MAX_DAYS[2] = 28
# 修改日期(根据月份限制天数)
while True:
self.day = int(input("请输入修改后的日期:"))
limit = MAX_DAYS[self.month]
if 1 <= self.day <= limit:
break
print(f"{self.month}月最多只有{limit}天,请重新输入。")
# 修改小时(0-23)
while True:
self.hour = int(input("请输入修改后的时钟值(0-23):"))
if 0 <= self.hour <= 23:
break
print("时钟值必须在 0-23 之间,请重新输入。")
# 修改分钟(0-59)
while True:
self.minute = int(input("请输入修改后的分钟值(0-59):"))
if 0 <= self.minute <= 59:
break
print("分钟值必须在 0-59 之间,请重新输入。")
def show_original(self):
"""显示原始数据"""
print(f"原数据为:{self.year}年{self.month}月{self.day}日{self.hour}时{self.minute}分")
def show_modified(self):
"""显示修改后的数据"""
print(f"修改后:{self.year}年{self.month}月{self.day}日{self.hour}时{self.minute}分")
def show_unchanged(self):
"""显示未修改的数据"""
print(f"未修改:{self.year}年{self.month}月{self.day}日{self.hour}时{self.minute}分")
# ========== 主程序 ==========
d1 = Data()
d1.show_original()
print("您要修改数据吗?")
revise = input("'yes' 或 'no'?\n")
while True:
if revise == "yes":
d1.update_all()
d1.show_modified()
break
elif revise == "no":
d1.show_unchanged()
break
else:
print("输入错误,请输入 'yes' 或 'no'。")
revise = input("'yes' 或 'no'?\n")
本来昨天就写好了,被限制发文了
更多推荐



所有评论(0)