|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
我最近写代码发现一个问题,为啥要多次给一个变量进行转换呢?不大明白,还是直接上代码吧!
'''
#手机店打折,星期二10:00-11:00和星期五14:00-15:00可以享受折扣;
#由客户输入今天星期几,并确认值是否合法;输入小时,并确认是否合法;不合法需重新输入;
#若合法,则看是否满足条件,满足输出“恭喜……”;不满足,输出“很遗憾……”;
#要做到不合法内容时候的合理提示。
'''
print('\n手机店正在打折,活动进行中……\n')
#异常处理校验
#异常一、校验输入的星期是否合法,并直到输入合法内容
week_string = ["星期一","星期二","星期三","星期四","星期五","星期六","星期日"]
strWeek = input("请输入今天的星期(例如星期二):")
while not (strWeek in week_string):
print("\n请输入合法中文星期,谢谢配合!")
strWeek = input("请输入今天的中文星期(例如星期二):")
if strWeek in week_string:
continue
#异常二、校验输入的时间是否合法,并直到输入合法内容
time_list = [
'0','1','2','3','4','5','6',
'7','8','9','10','11','12',
'13','14','15','16','17','18',
'19','20','21','22','23']
intTime = input("\n请输入进店时间(范围:0~23):")
while not (intTime in time_list):
print("\n请输入0~23之间的数字,谢谢配合!")
intTime = input("您于"+strWeek+"的进店时间(范围:0~23):")
if intTime.isdigit():
intTime = int(intTime)
if intTime >=0 and intTime <=23:
break
#看看合法的星期和时间是否满足折扣要求
intTime = int(intTime) #???为啥之前没有这句话没有出错,后来就出错了?
if (strWeek == "星期二" and 11 >= intTime >= 10 ) \
or(strWeek == "星期五" and 15 >= intTime >= 14 ):
print("\n恭喜你,获得了折扣参与资格,请快快选购吧!")
else:
print("\n很遗憾,"+strWeek+"的"+str(intTime)+"时活动结束,敬请期待下次活动……")
这里,最后倒数那几行,我用#符号提出来的问题,一直没有想明白,我之前已经转换为INT型了,为啥还需要转换一次?
(PS:请大神给我的代码优化一下呗,总感觉太冗余啰嗦了!谢谢)
谢谢各位鱼友帮忙解答,谢谢!
本帖最后由 qq1151985918 于 2022-2-6 05:06 编辑
如果没有那一行代码,当你输入的时间不满足 not (intTime in time_list)
也就是说输入0-23就不会进入while直接进行判断所以会报错
而输入其他就不会报错
因为进入while循环后输出的都经过 intTime = int(intTime) 转换格式
week_string = ["星期一","星期二","星期三","星期四","星期五","星期六","星期日"]
time_list = [str(i) for i in range(24)]
def input_format(target, data, note):
tar = input(f"请输入{target}({note}):")
while tar not in data:
print(f"\n请输入合法{target},谢谢配合!")
tar = input(f"请输入{target}({note}):")
return int(tar) if tar.isdigit() else tar
def isOnSale(week, time):
if week == "星期二" and 11 >= time >= 10:
return True
elif week == "星期五" and 15 >= time >= 14:
return True
else:
return False
if __name__ == "__main__":
print('\n手机店正在打折,活动进行中……\n')
strWeek = input_format("星期", week_string, "例如星期二")
intTime = input_format("时间", time_list, "范围:0~23")
if isOnSale(strWeek, intTime):
print("\n恭喜你,获得了折扣参与资格,请快快选购吧!")
else:
print("\n很遗憾,"+strWeek+"的"+str(intTime)+"时活动结束,敬请期待下次活动……")
|
|