|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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)+"时活动结束,敬请期待下次活动……")
复制代码
|
|