鱼C论坛

 找回密码
 立即注册
查看: 1065|回复: 3

[已解决]Python name error 问题

[复制链接]
发表于 2022-3-24 16:07:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
自学Python中,有问题求助:

作业:
1. 通常企业发放的年终奖是根据一年的盈利进行提成,A 公司的提成规则如下:2L1^C|=kr
ntb&Sf4IjyD'P}_1sCG{pMV=
当利润低于或等于 10 万元时:年终奖为 10%
当利润高于 10 万元,低于 20 万元时:低于 10 万元的部分按 10% 提成,高于 10 万元的部分,按 7.5% 提成
当利润 20 万到 40 万之间时:低于 10 万元的部分按 10% 提成,高于 10 万元低于 20 万元的部分,按 7.5% 提成,高于 20 万元的部分,按 5% 提成
当利润 40 万到 60 万之间时:低于 10 万元的部分按 10% 提成;高于 10 万元低于 20 万元的部分,按 7.5% 提成;高于 20 万元低于 40 万元的部分,按 5% 提成;高于40万元的部分,按 3% 提成
当利润 60 万到 100 万之间时:低于 10 万元的部分按 10% 提成;高于 10 万元低于 20 万元的部分,按 7.5% 提成;高于 20 万元低于 40 万元的部分,按 5% 提成;高于40万元低于 60 万元的部分,按 3% 提成;高于60万元的部分,按 1.5% 提成
当利润高于 100 万元时:低于 10 万元的部分按 10% 提成;高于 10 万元低于 20 万元的部分,按 7.5% 提成;高于 20 万元低于 40 万元的部分,按 5% 提成;高于40万元低于 60 万元的部分,按 3% 提成;高于60万元低于 100 万的部分,按 1.5% 提成;超过 100 万元的部分按 1% 提成

请编写一个程序,根据录入的利润,计算出应该发放的奖金总数?

我的答案:
profit = input("请输入今年的利润:")
x = float(profit)

if x <= 100000:
    a = x * 0.1
    print("应该发放的奖金总数为:", a, sep="")
elif 100000 < x <= 200000:
    b = a + (x - a) * 0.075
    print("应该发放的奖金总数为:", b, sep="")
elif 200000 < x <= 400000:
    c = b + (x - b) * 0.05
    print("应该发放的奖金总数为:", c, sep="")
elif 400000 < x <= 600000:
    d = c + (x - c) * 0.03
    print("应该发放的奖金总数为:", d, sep="")
elif 600000 < x <= 1000000:
    e = d + (x - d) * 0.015
    print("应该发放的奖金总数为:", e, sep="")
elif x >= 1000000:
    f = e + (x - e) * 0.01
    print("应该发放的奖金总数为:", f, sep="")

问题1: 但是run 程序的时候 总是提示我 a、b、e啊等 这几个 是name error。 为什么?如何修正

正确答案:
profit = float(input("请输入今年的利润:"))
   
if profit <= 100000:
    reward = profit * 0.1
elif 100000 < profit <= 200000:
    reward = 100000 * 0.1 + (profit - 100000) * 0.075
elif 200000 < profit <= 400000:
    reward = 100000 * 0.1 + 100000 * 0.075 + (profit - 200000) * 0.05
elif 400000 < profit <= 600000:
    reward = 100000 * 0.1 + 100000 * 0.075 + 200000 * 0.05 + (profit - 400000) * 0.03
elif 600000 < profit <= 1000000:
    reward = 100000 * 0.1 + 100000 * 0.075 + 200000 * 0.05 + 200000 * 0.03 + (profit - 600000) * 0.015
else:
    reward = 100000 * 0.1 + 100000 * 0.075 + 200000 * 0.05 + 200000 * 0.03 + 400000 * 0.015 + (profit - 1000000) * 0.01
   
print("应该发放的奖金总数是:", reward, sep='')

问题2: 我的答案是否也是可行的,该如何解决带哦name error的问题,我的答案 和 正确答案直接 最主要的不同是什么?

求解,谢谢大佬!
最佳答案
2022-3-24 16:47:23
本帖最后由 沈云初 于 2022-3-24 16:58 编辑

所有的if 后的命令都会运行,而elif后面的命令是根据上一个if是否运行,如果运行了,elif则略过,否则才运行。

问题一:所以当从第二个条件开始,实际第一个if 是没有运行的,a的值是没有计算的

问题二:每一个eilf后面的运算中abc的值都实际表达出来【每一条都是单独运算】

刚刚开始接触python可能描述会有问题,勿怪
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-3-24 16:11:43 | 显示全部楼层
求大佬详解,自己怎么想都想不通。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-24 16:47:23 | 显示全部楼层    本楼为最佳答案   
本帖最后由 沈云初 于 2022-3-24 16:58 编辑

所有的if 后的命令都会运行,而elif后面的命令是根据上一个if是否运行,如果运行了,elif则略过,否则才运行。

问题一:所以当从第二个条件开始,实际第一个if 是没有运行的,a的值是没有计算的

问题二:每一个eilf后面的运算中abc的值都实际表达出来【每一条都是单独运算】

刚刚开始接触python可能描述会有问题,勿怪
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-24 18:40:22 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-11 22:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表