鱼C论坛

 找回密码
 立即注册
查看: 1856|回复: 9

[已解决]python 了不起的分支和循环(I)课后作业请教

[复制链接]
发表于 2022-4-14 16:56:57 | 显示全部楼层 |阅读模式

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

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

x
  1. n=float(input("请输入今年的利润:"))
  2. ((N=n*10%) if n<=100000 else
  3. (N=100000*10%+(n-100000)*7.5%)if 200000>=n>100000 else
  4. (N=100000*10%+100000*7.5%+(n-200000)*5%)if 200000<=n<400000 else
  5. (N=100000*10%+100000*7.5%+(200000)*5%+(n-400000)*3%)if 400000<=n<600000 else
  6. (N=100000*10%+100000*7.5%+(200000)*5%+(200000)*3%+(n-600000)*1.5%)if 600000<=n<1000000 else
  7. (N=100000*10%+100000*7.5%+(200000)*5%+(200000)*3%+400000*1.5%+(n-1000000)*1%)if 1000000<=n)
  8. print("应该发放的奖金总数是:",N)
复制代码


最后一题这样写一直报错,看不出来有什么问题,求助
最佳答案
2022-4-14 17:03:55
本帖最后由 isdkz 于 2022-4-14 17:21 编辑

第一:赋值表达式不能加括号,你可以写 N=(n*0.1) 但是不可以这样写 (N=n*0.1)

第二:三元表达式中不能使用赋值表达式,也就是

你可以写 a = 1 if n<=100000 else 2 但是不可以这样写  a = 1 if n<=100000 else a = 2

第三:10% 是数学上的写法,在编程语言中 % 是取余运算符,10% 你得用 0.01 或 (10/100)

第四:三元表达式一定得有 if ... else ... ,你最后那里没有 else
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-4-14 17:03:55 | 显示全部楼层    本楼为最佳答案   
本帖最后由 isdkz 于 2022-4-14 17:21 编辑

第一:赋值表达式不能加括号,你可以写 N=(n*0.1) 但是不可以这样写 (N=n*0.1)

第二:三元表达式中不能使用赋值表达式,也就是

你可以写 a = 1 if n<=100000 else 2 但是不可以这样写  a = 1 if n<=100000 else a = 2

第三:10% 是数学上的写法,在编程语言中 % 是取余运算符,10% 你得用 0.01 或 (10/100)

第四:三元表达式一定得有 if ... else ... ,你最后那里没有 else
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-14 17:00:27 From FishC Mobile | 显示全部楼层
((N=n*10%) if n<=100000这是啥语法,整反了吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-4-14 17:04:01 | 显示全部楼层

这个是15讲里面说到的一个写法
  1. 条件成立时执行的语句 if 条件 else 条件不成立时执行的语句
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-4-14 17:05:02 | 显示全部楼层
本帖最后由 LYF39 于 2022-4-14 17:13 编辑
LYF39 发表于 2022-4-14 17:04
这个是15讲里面说到的一个写法


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-4-14 17:13:04 | 显示全部楼层
isdkz 发表于 2022-4-14 17:03
第一:赋值表达式不能加括号,你可以写 N=(n*0.1) 但是不可以这样写 (N=n*0.1)

第二:三元表达式中不能 ...

第二个的意思是这道题目就不可以用这种写法了吗,我更改了第一个和第三个问题,但是还是不行不是不因为第二个原则导致的啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-14 17:14:57 | 显示全部楼层
LYF39 发表于 2022-4-14 17:13
第二个的意思是这道题目就不可以用这种写法了吗,我更改了第一个和第三个问题,但是还是不行不是不因为第 ...

不是不可以,赋值只需要把整个三元表达式的值赋给变量就可以了,

不要在三元表达式中使用赋值表达式
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-14 17:24:06 | 显示全部楼层
LYF39 发表于 2022-4-14 17:13
第二个的意思是这道题目就不可以用这种写法了吗,我更改了第一个和第三个问题,但是还是不行不是不因为第 ...

先不说你的代码逻辑对不对,

还有第四个问题:

三元表达式一定得有 if ... else ... ,你最后那里没有 else,

我给你改了一下:

  1. n=float(input("请输入今年的利润:"))
  2. N=((n*0.1) if n<=100000 else
  3. (100000*0.1+(n-100000)*0.075)if 200000>=n>100000 else
  4. (100000*0.1+100000*0.075+(n-200000)*0.05)if 200000<=n<400000 else
  5. (100000*0.1+100000*0.075+(200000)*0.05+(n-400000)*0.03)if 400000<=n<600000 else
  6. (100000*0.1+100000*0.075+(200000)*0.05+(200000)*0.03+(n-600000)*0.015)if 600000<=n<1000000 else
  7. (100000*0.1+100000*0.075+(200000)*0.05+(200000)*0.03+400000*0.015+(n-1000000)*0.01)if 1000000<=n else n)
  8. print("应该发放的奖金总数是:",N)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-4-14 17:29:40 | 显示全部楼层
isdkz 发表于 2022-4-14 17:24
先不说你的代码逻辑对不对,

还有第四个问题:

最后那个问题我刚刚发现了,因为偷懒复制粘贴了,所以惯性直接改了,最后那个if 1000000<=n else 都可以不要了,改的写法我看懂了谢谢

听我说谢谢你
因为有你温暖了四季
谢谢你感谢有你
世界更美丽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-14 17:33:51 | 显示全部楼层
LYF39 发表于 2022-4-14 17:29
最后那个问题我刚刚发现了,因为偷懒复制粘贴了,所以惯性直接改了,最后那个if 1000000

不客气
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-7 15:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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