实验内容
前一日函数PreDate是NextDate的逆函数,即给定一个月份、日期、年,会返回前一天的日期。
年的取值在1812年到2020年
日的取值在1日到31日之间
1 月的取值在1到12月之间
分析:
(1)分析
输入:year--month--day
操作:
day变量值减1
day复位为30
day复位为31
day复位为30
day复位为29
day复位为28
month变量值减1
month复位为12
year变量值减1
(2)规则
M1={ month有30天 }
M2={ month有31天,1月、3月、8月除外 }
M3={ month是1月 }
M4={ month是2月 }
M5={ month是3月 }
M6={ month是8月 }
D1={ day=1 }
D2={ 2≤day≤27 }
D3={ day=28 }
D4={ day=29 }
D5={ day=30 }
D6={ day=31 }
Y1={ year是闰年 }
Y2={ year不是闰年 }
代码如下:
import datetime
print("请输入格式为xxxx-xx-xx的时间")
while True:
now_time = input('输入时间:')
this_time = datetime.datetime.strptime(now_time, '%Y-%m-%d')
year = int(this_time.strftime("%Y"))
month = int(this_time.strftime("%m"))
day = int(this_time.strftime("%d"))
if year < 1812 or year > 2020 or month < 1 or month > 12 or day < 1 or day > 31:
print('请重新输入时间')
else :
break
# yes_time = this_time + datetime.timedelta(days=-1) #调用函数直接输出
# yes_Time = yes_time.strftime('%Y-%m-%d') #格式化输出
# print(yes_Time)
# 年份发生改变情况
if month == 1 and day == 1:
year = year - 1
month = 12
day = 31
# 月份发生改变
elif month != 1 and day == 1:
if month == 2 or month == 4 or month == 6 or month == 8 or month == 9 or month == 11:
month = month -1
day = 31
elif month == 5 or month == 7 or month == 10 or month == 12:
month = month -1
day = 30
else:
if (year % 4 == 0 and year % 100 > 0) or (year % 100 == 0 and year % 400 == 0) :
month = month - 1
day = 29
else:
month = month - 1
day = 28
# 只是day发生变化
else:
day = day - 1
yes_time = datetime.datetime(year,month,day)
print(yes_time.strftime('%Y-%m-%d'))
决策表
|
|
1 |
2-5 |
6 |
7 |
8-12 |
13 |
14-18 |
19 |
20-21 |
| month在 |
M1 |
M1 |
M1 |
M2 |
M2 |
M3 |
M3 |
M4 |
M4 |
| day在 |
D1 |
D2-D5 |
D6 |
D1 |
D2-D6 |
D1 |
D2-D6 |
D1 |
D2-D3 |
| year在 |
|
|
|
|
|
|
|

本文介绍了如何使用Python实现决策表法来测试preDate函数,该函数返回给定日期的前一天。实验内容包括处理1812年至2020年间不同月份和日期的情况。通过分析输入(year, month, day)和规则(如月份有30天、31天,2月特殊情况等),编写相应代码并展示了决策表和测试用例。"
127660148,7494852,uniApp获取与授权位置信息,"['javascript', '前端', '开发语言', 'uniApp']
最低0.47元/天 解锁文章
893





