Python使用for循环计算员工日薪时输出重复该如何处理
问题原因
- 代码中添加了不必要的
for i in range(1,31):循环,该循环会固定执行30次,循环内判断逻辑的依据是用户提前输入的固定天数h,全程不会发生变化,因此每次循环都会计算出相同的薪资并打印,导致输出重复30次。 - 最后一个
elif 28 <= h <= 31:分支下的print(wage)语句缩进错误,未和同分支的wage=(h*150)对齐,属于全局循环内的语句,无论是否触发前面的if判断,这行打印都会执行,进一步加剧了重复打印的问题。
修复方案
- 移除无意义的for循环:该需求仅需根据输入的单次天数计算薪资,无需遍历1到30的序列
- 修正最后一个分支下print语句的缩进,确保仅触发对应薪资档位时才执行打印
- 可选补充输入合法性校验,避免非数字、天数超出1-31范围等异常情况
修复后代码
Name = input("What is the employee's name?") days = input("Enter Days:") # 输入合法性校验 try: h = float(days) if h < 1 or h > 31: print("输入的天数不合法,请输入1-31之间的数字") else: if h <= 19: wage = h * 50 print(wage) elif 20 <= h <= 24: wage = h * 100 print(wage) elif 25 <= h <= 27: wage = h * 125 print(wage) elif 28 <= h <= 31: wage = h * 150 print(wage) except ValueError: print("请输入合法的数字作为天数")
运行效果
输入天数为23时,仅输出单次结果2300.0,无重复输出。
内容的提问来源于stack exchange,提问作者Shravani Kulkarni CodeNinja
相关产品推荐
相关产品推荐

