1、创建字典info存放查询信息(始发站、终点站、出发日期):
info = {
'from_station': '',
'to_station': '',
'from_date': ''
}
2、实现检查查询信息的函数:
设计思路:
- 输入的站点是不是在全国现有车站中;
- 输入的始发站和终点站必须不同;
- 输入日期必须在15天内。
在此方法中出现的station*在stationsInfo.py中,可以思考一下为什么使用这些变量,一些变量在后续会使用,现在只需要stationLists。
#检查输入信息from_station, to_station, d
def inputArgs(from_station, to_station, d):
now_time = datetime.datetime.now() # 当前日期
# 校验
flag1 = False
flag2 = False
flag3 = False
while flag1 == False or flag2 == False or flag3 == False:
#输入的站点是不是在全国现有的车站列表中,如果有,使用count后返回>0的值
from_index = stationLists.count(from_station)
to_index = stationLists.count(to_station)
# 始发站在车站列表中,并且始发站和终点站不同
if from_index > 0 and to_station != from_station:
flag1 = True
# 终点站在车站列表中,并且始发站和终点站不同
if to_index > 0 and to_station != from_station:
flag2 = True
rdate = re.match(r'^(\d{4})-(\d{2})-(\d{2})$', d)
if rdate:
from_date = datetime.datetime.strptime(d, '%Y-%m-%d')
sub_day = (from_date - now_time).days
if -1 <= sub_day < 15:
flag3 = True
if not flag1:
print("始发站不合法!")
from_station = input("请输入出发站(年-月-日):\n")
if not flag2:
print("终点站不合法!")
to_station = input("请输入目的地:\n")
if not flag3:
print("出发日期不合法!")
d = input("请输入出发日期(格式:年-月-日):\n")
from_date = datetime.datetime.strptime(d, '%Y-%m-%d')
sub_day = (from_date - now_time).days
info['from_station'] = from_station
info['to_station'] = to_station
info['from_date'] = d
return info
3、测试代码:
import datetime
import re
from stationsInfo import stationLists
info = {
'from_station': '',
'to_station': '',
'from_date': ''
}
#检查输入信息from_station, to_station, d
def inputArgs(from_station, to_station, d):
# 输入车站信息
# from_station = input("请输入出发站:\n")
# to_station = input("请输入目的地:\n")
# d = input("请输入出发日期(格式:年-月-日):\n")
now_time = datetime.datetime.now() # 当前日期
# 校验
flag1 = False
flag2 = False
flag3 = False
while flag1 == False or flag2 == False or flag3 == False:
from_index = stationLists.count(from_station)
to_index = stationLists.count(to_station)
# 始发站在车站列表中,并且始发站和终点站不同
if from_index > 0 and to_station != from_station:
flag1 = True
# 终点站在车站列表中,并且始发站和终点站不同
if to_index > 0 and to_station != from_station:
flag2 = True
rdate = re.match(r'^(\d{4})-(\d{2})-(\d{2})$', d)
if rdate:
from_date = datetime.datetime.strptime(d, '%Y-%m-%d')
sub_day = (from_date - now_time).days
if -1 <= sub_day < 15:
flag3 = True
if not flag1:
print("始发站不合法!")
from_station = input("请输入出发站:\n")
if not flag2:
print("终点站不合法!")
to_station = input("请输入目的地:\n")
if not flag3:
print("出发日期不合法!")
d = input("请输入出发日期(格式:年-月-日):\n")
from_date = datetime.datetime.strptime(d, '%Y-%m-%d')
sub_day = (from_date - now_time).days
info['from_station'] = from_station
info['to_station'] = to_station
info['from_date'] = d
return info
if __name__ == "__main__":#main方法
isContionue = 'Y'
while isContionue == 'Y' or isContionue == 'y':
from_stations = input('请输入始发站:\n')
to_statsions = input('请输入终点站:\n')
from_date = input('请输入出发日期:\n')
info = inputArgs(from_stations, to_statsions, from_date)
print(info)
isContionue = input('是否继续?Y/N\n')
input('按任意键退出...')
成功检测出错误的输入参数。
注意:输入的始发站和终点站要符合形式相同的原则,即都是拼音或都是中文或都是简称。