Python之多条件语句编程实训 python实训作业

第1关:实现分段函数计算

本关必读

函数是一种特殊的映射,即数集到数集的映射。虽然本质上都是映射,但为了方便研究和应用,数学家们对函数做了很多分类,如线性函数,非线性函数,随机函数,还有一些具有特殊性质的函数等等。

本关我们要关注的是分段函数。所谓分段函数:即对于自变量x的不同取值范围,有着不同的对应法则,这样的函数通常叫做分段函数。

本关需要计算的分段函数参见下表:

xy
x<00
0<=x<5x
5<=x<103x-5
10<=x<200.5x-2
20<=x0

本关任务

本关任务是实现上述表格中分段函数的计算,即实现step1/SegFunctionCal.py文件中的SegFun(x)函数,SegFunctionCal.py文件的代码如下:

 
  1. # -*- coding:utf-8 -*-
  2. # 计算分段函数的值
  3. def SegFun(x):
  4. # 请在此添加实现代码

其中:x是传递给函数SegFun的参数。

测试说明

本关的测试文件是step1/SegFunctionCalTest.py,负责对你写的实现代码进行测试。具体说明如下:

 
  1. # -*- coding:utf-8 -*-
  2. import SegFunctionCal,os
  3. # 从命令行读入一个整数
  4. # 这个整数取自测试集的输入
  5. x = int(input())
  6. print (SegFunctionCal.SegFun(x))

上述代码中所调用函数的参数从命令行读入,并将处理后的结果通过命令行输出。平台将根据这个命令行输出来判断SegFun(x)函数是否正确实现。注意,step1/SegFunctionCalTest.py的代码不能被修改。

以下是平台对step1.SegFunctionCalTest的测试样例: 测试输入:-3 预期输出:0

测试输入:2 预期输出:2

测试输入:8 预期输出:19

测试输入:15 预期输出:5.5

测试输入:100 预期输出:0

开始你的任务吧,祝你成功!

参考答案

# -*- coding:utf-8 -*-

#计算分段函数的值
def SegFun(x):
    # 请在此添加实现代码
    if x<0:
        return 0
    elif 0<=x<5:
        return x
    elif 5<=x<10:
        return 3*x-5
    elif 10<=x<20:
        return 0.5*x-2
    elif 20<=x:
        return 0
    return 0

第2关:根据输入的分数输出对应的等级

本关必读

一般情况下,对于学校而言评判一个学生成绩的好坏有两种方式:一种是百分制,如:90100、8089、7079、6069、0~59;而与百分制对应的另外一种方式则是等级,如:”A”、 ”B”、 ”C”、 ”D”、 ”E”。

那么在现实情况下经常会遇到百分制与等级之间转换的问题,本关正是这样一个问题,具体要求是:将分数转换成对应的等级。其中:

  • 学习成绩>=90分的同学用A表示;
  • 学习成绩间于60-89分之间的用B表示;
  • 学习成绩60分以下的用C表示。

本关任务

本关任务是根据输入的分数输出对应的等级,即实现step2/ScoreToGrade.py文件中的Grade(score)函数,ScoreToGrade.py文件的代码如下:

 
  1. # -*- coding:utf-8 -*-
  2. # 将分数转换为对应等级
  3. def Grade(score):
  4. # 请在此添加实现代码

其中:score是传递给函数Grade的参数。

测试说明

本关的测试文件是step2/ScoreToGradeTest.py,负责对你写的实现代码进行测试。具体说明如下:

 
  1. # -*- coding:utf-8 -*-
  2. import ScoreToGrade,os
  3. # 从命令行读入一个正整数
  4. # 这个整数取自测试集的输入
  5. score = int(input())
  6. print (ScoreToGrade.Grade(score))

上述代码中所调用函数的参数从命令行读入,并将处理后的结果通过命令行输出。平台将根据这个命令行输出来判断Grade(score)函数是否正确实现。注意,step2/ScoreToGradeTest.py的代码不能被修改。

以下是平台对step2.ScoreToGradeTest的测试样例: 测试输入:100 预期输出:A

测试输入:90 预期输出:A

测试输入:89 预期输出:B

测试输入:60 预期输出:B

测试输入:59 预期输出:C

测试输入:25 预期输出:C

开始你的任务吧,祝你成功!

参考答案

# -*- coding:utf-8 -*-

# 将分数转换为对应等级
def Grade(score):
    # 请在此添加实现代码
    if score>=90:
        return 'A'
    elif 60<=score<=89:
        return 'B'
    else:
        return 'C'

第3关:根据利润来计算应发放的奖金数

本关必读

通常情况下企业给员工发放奖金一般是参照企业获得的利润来进行规划的,本关需要同学们完成的就是一道根据企业利润来计算的奖金的题目,题目如下:

企业发放的奖金根据利润提成。

  • 当利润低于或等于10万元时,奖金可提10%
  • 当利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%
  • 当利润为20万40万之间时,高于20万元的部分,可提成5%
  • 当利润为40万60万之间时,高于40万元的部分,可提成3%
  • 当利润为60万100万之间时,高于60万元的部分,可提成1.5%
  • 当利润高于100万元时,超过100万元的部分按1%提成, 请根据利润来计算应发放奖金总数。

本关任务

本关任务是根据利润来计算应发放的奖金数,即实现step3/BonusOfProfit.py文件中的Bonus(x)函数,BonusOfProfit.py文件的代码如下:

 
  1. # -*- coding:utf-8 -*-
  2. # 将分数转换为对应等级
  3. def Bonus(x):
  4. # 请在此添加实现代码

其中:x是传递给函数Bonus的参数。

测试说明

本关的测试文件是step3/BonusOfProfitTest.py,负责对你写的实现代码进行测试。具体说明如下:

 
  1. # -*- coding:utf-8 -*-
  2. import BonusOfProfit,os
  3. # 从命令行读入一个整数
  4. # 这个整数取自测试集的输入
  5. x = int(input())
  6. print (BonusOfProfit.Bonus(x))

上述代码中所调用函数的参数从命令行读入,并将处理后的结果通过命令行输出。平台将根据这个命令行输出来判断Bonus(x)函数是否正确实现。注意,step3/BonusOfProfitTest.py的代码不能被修改。

以下是平台对step3.BonusOfProfitTest的测试样例: 测试输入:12000 预期输出:1200.0

测试输入:120000 预期输出:11500.0

测试输入:250000 预期输出:20000.0

测试输入:450000 预期输出:29000.0

开始你的任务吧,祝你成功!

参考答案

方法一

# -*- coding:utf-8 -*-

# 将分数转换为对应等级
def Bonus(x):
    # 请在此添加实现代码
    if x<=100000:
        return x*0.1
    elif 100000<x<=200000:
        return Bonus(100000)+(x-100000)*0.075
    elif 200000<x<=400000:
        return Bonus(200000)+(x-200000)*0.05
    elif 400000<x<=600000:
        return Bonus(400000)+(x-400000)*0.03
    elif 600000<x<=1000000:
        return Bonus(600000)+(x-600000)*0.015
    elif x>1000000:
        return Bonus(1000000)+(x-1000000)*0.01
    return 0

方法二

# 将分数转换为对应等级
def Bonus(x):
    if x<=100000:
        bonus=x*0.1
        return bonus
    elif 100001<x<=200000:
        bonus=10000+(x-100000)*0.075
        return bonus
    elif 200001<x<=400000:
        bonus=10000+7500+(x-200000)*0.05
        return bonus
    elif 400001<x<=600000:
        bonus=10000+7500+10000+(x-400000)*0.03
        return bonus
    elif 600001<x<=1000000:
        bonus=10000+7500+10000+6000+(x-600000)*0.015
        return bonus
    elif 600001<x<=1000000:
        bonus=10000+7500+10000+6000+6000+(x-600000)*0.01
        return bonus

————————分割线————————

本人python小白,内容如有不妥之处,还请大佬指教。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值