如何通过if-else语句根据条件为单个变量赋予不同取值?
嘿,我来一步步帮你搞定这两个问题~
问题1:根据if-else执行结果为单个变量赋值
这是条件赋值的基础场景,根据逻辑复杂度,有两种常用实现方式:
- 方式一:if-elif-else代码块(推荐多分支场景)
先声明变量(可选,但能避免未定义报错),再通过分支判断给它赋予不同值,可读性拉满:
# 可选:先初始化变量,防止分支覆盖不到时出错 target_var = 0.0 # 示例:根据月薪区间赋值扣除率 monthly_salary = hours_worked * hourly_pay if monthly_salary < 4000: target_var = deductions1 elif 4000 <= monthly_salary < 8000: target_var = deductions2 elif 8000 <= monthly_salary < 12000: target_var = deductions3 else: target_var = deductions4
- 方式二:三元表达式(仅限简单双分支)
如果只有两个判断条件,用三元表达式会更简洁,但多分支别用——可读性会崩:
# 示例:双分支场景下的简洁写法 target_var = deductions1 if monthly_salary < 4000 else deductions2
问题2:根据用户输入让deductions匹配四个预设值,是否可实现?
当然可以!你代码里的问题是把deductions和monthly_salary错误地写在了同一行赋值,导致逻辑混乱。只要修正这个小失误,补全区间判断,就能完美实现需求。
修正后的完整代码示例:
# 预先计算四个预设扣除率 deductions1 = 0.12 + 0.04 + 0.01 + 0.06 # 计算结果:0.23 deductions2 = 0.20 + 0.07 + 0.03 + 0.06 # 计算结果:0.36 deductions3 = 0.30 + 0.09 + 0.05 + 0.06 # 计算结果:0.50 deductions4 = 0.38 + 0.11 + 0.07 + 0.06 # 计算结果:0.62 # 获取用户输入的工作时长和时薪 hours_worked = float(input("请输入当月工作时长:")) hourly_pay = float(input("请输入你的时薪:")) # 计算月薪 monthly_salary = hours_worked * hourly_pay # 根据月薪区间匹配对应扣除率 if monthly_salary < 4000: deductions = deductions1 elif 4000 <= monthly_salary < 8000: # 可根据实际需求调整区间阈值 deductions = deductions2 elif 8000 <= monthly_salary < 12000: deductions = deductions3 else: deductions = deductions4 print(f"匹配的扣除率为:{deductions}")
运行这段代码后,用户输入工作时长和时薪,程序会自动计算月薪并匹配对应的预设扣除率。
内容的提问来源于stack exchange,提问作者H D
相关产品推荐
相关产品推荐

