如何编写校验天数范围2-40的双数值数据验证循环及修复逻辑错误
问题原因
原代码校验失效核心有3个问题:
- 循环判断逻辑运算符使用错误:原while条件写的是
num_days < 2 and num_days > 40,不存在整数能同时小于2且大于40,这个条件永远为假,所以输入大于40的数值时根本不会进入校验重输的循环。 - while循环下的重输代码没有正确缩进,不符合Python语法要求,运行会直接报缩进错误。
- 错误提示信息不清晰,用户无法明确知道合法输入的范围。
修正方案
校验2~40闭区间的合法值时,非法输入的判定规则是:输入值小于2,或者输入值大于40,两个条件满足任意一个就需要提示用户重新输入,因此要把条件里的and换成or,同时补全循环体缩进,优化提示信息。
修正后可运行代码
dayPennies = 1 num_days = 0 total = 0.0 num_days = int(input('请输入天数:')) # 命中非法值则持续要求重输 while num_days < 2 or num_days > 40: num_days = int(input("输入无效,请输入2到40之间的天数:")) print('日期 \t 当日赚取薪资(美元)') print('_______________________________') for day in range(1, num_days + 1): print(day, '\t$', float(dayPennies / 100)) total += dayPennies dayPennies *= 2 print(num_days, '天总薪资为:$', float(total/100))
效果验证
- 输入1、0等小于2的数值:触发重输提示
- 输入41、100等大于40的数值:触发重输提示
- 输入2、40、20等区间内的数值:正常进入薪资计算逻辑
内容的提问来源于stack exchange,提问作者Jasiah
相关产品推荐
相关产品推荐

