爱意随风起9306 发表于 2022-12-30 10:11:57

有没有办法简化代码

n=int(input())
if n<100000:
    q=n*0.1
    print('%.1f'%q)
elif 100000<=n<200000:
    q=10000+(n-100000)*0.075
    print('%.1f' % q)
elif 200000<=n<400000:
    q=20000+(n-200000)*0.05
    print('%.1f' % q)
elif 400000<=n<600000:
    q=40000+(n-400000)*0.03
    print('%.1f' % q)
elif 600000<=n<1000000:
    q=60000+(n-600000)*0.015
    print('%.1f' % q)
elif n>=1000000:
    q=100000+(n-1000000)*0.01
    print('%.1f' % q)

tommyyu 发表于 2022-12-30 10:16:02

我感觉这种分段记费的代码只能这样写,没有什么太好的优化方法

洋洋痒 发表于 2022-12-30 10:17:10

把print最后打印一次就行,其他的地方没找到哪里可以简化
n=int(input())
if n<100000:
    q=n*0.1
elif 100000<=n<200000:
    q=10000+(n-100000)*0.075
elif 200000<=n<400000:
    q=20000+(n-200000)*0.05
elif 400000<=n<600000:
    q=40000+(n-400000)*0.03
elif 600000<=n<1000000:
    q=60000+(n-600000)*0.015
elif n>=1000000:
    q=100000+(n-1000000)*0.01
print('%.1f' % q)

但我觉得你代码写错了可能,你检查一下确定是20000+      40000+          60000+      100000+ 吗?我是猜的

爱意随风起9306 发表于 2022-12-30 10:20:37

洋洋痒 发表于 2022-12-30 10:17
把print最后打印一次就行,其他的地方没找到哪里可以简化




https://thumbnail1.baidupcs.com/thumbnail/199bd450eia27d49b7c056a2d2593253?fid=1590253992-250528-724527419754510&rt=pr&sign=FDTAER-DCb740ccc5511e5e8fedcff06b081203-zhL37n%2fNR6BgqHjkeWksyYAWmkU%3d&expires=8h&chkbd=0&chkv=0&dp-logid=358534864833218770&dp-callid=0&time=1672365600&size=c1463_u915&quality=90&vuk=1590253992&ft=image&autopolicy=1

爱意随风起9306 发表于 2022-12-30 10:23:31

洋洋痒 发表于 2022-12-30 10:17
把print最后打印一次就行,其他的地方没找到哪里可以简化




我觉得我这个代码是最笨的那种

洋洋痒 发表于 2022-12-30 10:26:08

爱意随风起9306 发表于 2022-12-30 10:20


啊,是我错了,就是你那么写

hveagle 发表于 2022-12-31 13:34:58

爱意随风起9306 发表于 2022-12-30 10:20


没有

liuhongrun2022 发表于 2022-12-31 19:36:15

↑同上

N781791878 发表于 2023-1-5 16:33:18

n=int(input())
if n<100000:
    q=n*0.1
elif n<200000:
    q=10000+(n-100000)*0.075
elif n<400000:
    q=20000+(n-200000)*0.05
elif n<600000:
    q=40000+(n-400000)*0.03
elif n<1000000:
    q=60000+(n-600000)*0.015)
else:
    q=100000+(n-1000000)*0.01
print('%.1f' % q)

coolplaylin 发表于 2023-1-12 09:10:23

可以一行流写n=int(input())
q = n*0.1 if n<100000 else 10000+(n-100000)*0.075 if 100000<=n<200000 else 20000+(n-200000)*0.05 if 200000<=n<400000 else 40000+(n-400000)*0.03 if 400000<=n<600000 else 60000+(n-600000)*0.015 if 600000<=n<1000000 else 100000+(n-1000000)*0.01
print('%.1f' % q)
或者
n=int(input())
print('%.1f' % (n*0.1 if n<100000 else 10000+(n-100000)*0.075 if 100000<=n<200000 else 20000+(n-200000)*0.05 if 200000<=n<400000 else 40000+(n-400000)*0.03 if 400000<=n<600000 else 60000+(n-600000)*0.015 if 600000<=n<1000000 else 100000+(n-1000000)*0.01))
页: [1]
查看完整版本: 有没有办法简化代码