LYF39 发表于 2022-4-14 16:56:57

python 了不起的分支和循环(I)课后作业请教

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

最后一题这样写一直报错,看不出来有什么问题,求助{:10_266:}

isdkz 发表于 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

wp231957 发表于 2022-4-14 17:00:27

((N=n*10%) if n<=100000这是啥语法,整反了吧

LYF39 发表于 2022-4-14 17:04:01

wp231957 发表于 2022-4-14 17:00
((N=n*10%) if n

这个是15讲里面说到的一个写法
条件成立时执行的语句 if 条件 else 条件不成立时执行的语句

LYF39 发表于 2022-4-14 17:05:02

本帖最后由 LYF39 于 2022-4-14 17:13 编辑

LYF39 发表于 2022-4-14 17:04
这个是15讲里面说到的一个写法

LYF39 发表于 2022-4-14 17:13:04

isdkz 发表于 2022-4-14 17:03
第一:赋值表达式不能加括号,你可以写 N=(n*0.1) 但是不可以这样写 (N=n*0.1)

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

第二个的意思是这道题目就不可以用这种写法了吗,我更改了第一个和第三个问题,但是还是不行不是不因为第二个原则导致的啊

isdkz 发表于 2022-4-14 17:14:57

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

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

不要在三元表达式中使用赋值表达式

isdkz 发表于 2022-4-14 17:24:06

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

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

还有第四个问题:

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

我给你改了一下:

n=float(input("请输入今年的利润:"))
N=((n*0.1) if n<=100000 else
(100000*0.1+(n-100000)*0.075)if 200000>=n>100000 else
(100000*0.1+100000*0.075+(n-200000)*0.05)if 200000<=n<400000 else
(100000*0.1+100000*0.075+(200000)*0.05+(n-400000)*0.03)if 400000<=n<600000 else
(100000*0.1+100000*0.075+(200000)*0.05+(200000)*0.03+(n-600000)*0.015)if 600000<=n<1000000 else
(100000*0.1+100000*0.075+(200000)*0.05+(200000)*0.03+400000*0.015+(n-1000000)*0.01)if 1000000<=n else n)
print("应该发放的奖金总数是:",N)

LYF39 发表于 2022-4-14 17:29:40

isdkz 发表于 2022-4-14 17:24
先不说你的代码逻辑对不对,

还有第四个问题:


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

听我说谢谢你
因为有你温暖了四季
谢谢你感谢有你
世界更美丽{:5_109:}

isdkz 发表于 2022-4-14 17:33:51

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

不客气{:5_109:}
页: [1]
查看完整版本: python 了不起的分支和循环(I)课后作业请教