任务描述
本关介绍顺序结构,程序最基本的结构就是顺序结构,顺序结构就是程序按照语句顺序,从上到下依次执行各条语句。
本关要求读者理解顺序结构,对输入的三个数changeone,changetwo,plus能够先交换changeone,cahngetwo值,然后计算changeone + plus的值。
相关知识
要实现上述功能,需要严格按照顺序来实现每一个步骤。如果顺序错误,那么便会得出错误结果。
顺序结构
顺序结构如下图所示:
假设存在a,b,c三个整数,如果按照以下顺序执行:
c = a + b
b = c - a
a = b + c
与按照顺序
b = c - a
a = b + c
c = a + b
得出的a,b,c的结果是不同的。
#####交换数值
假设存在整数a = 10,b = 20,交换a,b数值的语句如下:
tmp = a
a = b
b = tmp
编程要求
本关的编程任务是补全inTurn.py文件中的函数部分,程序中给出a,b,c三个整数,要求实现先交换a,b的值,然后计算a + c的值并输出。
本关涉及的代码文件inTurn.py的代码框架如下:
changeOne = int(input())
changeTwo = int(input())
plus = int(input())
#请在此添加代码,交换changeOne,changeTwo的值,然后计算changeOne和plus的和result的值
#********** Begin #
#* End **********#
print(result)
测试说明
本关的测试文件是src/step1/inTurn.py。
读者将 src/step1/inTurn.py 中的代码补充完毕,然后点击评测,平台自动编译运行 inTurn.py ,并以标准输入方式提供测评输入;
平台获取程序的输出,然后将其与预期输出对比,如果一致则测试通过;否则测试失败。
以下是平台对src/step1/inTurn.py的样例测试集:
测试输入:
2
5
10
预期输出:
15
changeOne = int(input())
changeTwo = int(input())
plus = int(input())
#请在此添加代码,交换changeOne,changeTwo的值,然后计算changeOne和plus的和result的值
#********** Begin *********#
changeOne,changeTwo=changeTwo,changeOne
result=plus+changeOne
#********** End **********#
print(result)
任务描述
程序的第二大结构就是选择结构,在此结构中,程序通过对一个代码块或者几个代码块的判断来决定接下来运行哪一个代码块。
以下场景还原了选择结构的现实场景:某公司根据员工的工龄来决定员工工资的涨幅,当员工的工龄大于等于5年并小于10年时,涨幅是现工资的5%;当员工的工龄大于等于10年并小于15年时,涨幅是现工资的10%;工龄大于等于15年时工资涨幅为15%。
本关的任务是让读者理解选择结构,学会使用最基本的选择语句:if-else语句。
相关知识
选择结构
选择结构如下图所示:
if-else语句
在python中,if-else语句用于控制程序执行,基本形式为:
if 判断语句1:
step1
else:
step2
当判断语句1为真时,执行step1,不成立执行step2。
例如:
name = ‘choose’
#判断变量name是否为’choose’
if name == ‘choose’
print(“条件成立”)
else
print(“条件不成立”)
elif语句
当判断条件有多个时,则用elif语句,基本形式为:
if 判断语句1:
step1
elif 判断语句2:
step2
elif 判断语句3:
step3
……
else:
step
当判断语句1为真时,执行step1,判断语句1为假,判断语句2为真时执行step2,……,最后判断语句都为假时执行step。
例如:
userId = 43
#判断员工号
if userId == 10:
print(“这是10号员工”)
elif userId == 22:
print(“这是22号员工”)
elif userId == 18:
print(“这是18号员工”)
else:
print(“员工ID为:”,userId)
如果你想了解更多运算符相关知识,请参考[美]Katie Cunningham著《Python入门经典》第三章。
编程要求
本关的编程任务是补全choose.py文件中的判断语句部分,具体要求如下:
填入如果workYear < 5的判断语句
填入如果workYear >= 5 and workYear < 10的判断语句
填入如果workYear >= 10 and workYear < 15的判断语句
填入当上述条件判断都为假时的判断语句
本关涉及的代码文件choose.py的代码框架如下:
workYear = int(input())
#请在下面填入如果workYear < 5的判断语句
#********** Begin #
#* End #
print(“工资涨幅为0”)
#请在下面填入如果workYear >= 5 and workYear < 10的判断语句
# Begin #
# End #
print(“工资涨幅为5%”)
#请在下面填入如果workYear >= 10 and workYear < 15的判断语句
# Begin #
# End #
print(“工资涨幅为10%”)
#请在下面填入当上述条件判断都为假时的判断语句
# Begin #
# End ***********#
print(“工资涨幅为15%”)
测试说明
本文的测试文件是src/step2/choose.py,具体测试过程如下:
读者将 src/step2/choose.py 中的代码补充完毕,然后点击评测,平台自动编译运行 choose.py ,并以标准输入方式提供测评输入;
平台获取程序的输出,然后将其与预期输出对比,如果一致则测试通过;否则测试失败。
以下是平台对src/step2/choose.py的样例测试集:
测试输入:10
预期输出:工资涨幅为10%
任务描述
程序中的选择结构中除了if-else,elif之外,还有一个三元操作符。三元操作符也是根据条件判断执行哪一个代码块,但三元操作符的最大特点是不需要像if-else语句那样写多行代码,三元操作符只需一行代码。
本关要求读者能够学会并使用三元操作符来判断谁才是射击比赛的赢家。
相关知识
三元操作符
三元操作符的基本格式为:
result = x if x < y else y
其中,x < y为判断语句,若x < y为真则result = x,否则result = y。
如果你想了解更多运算符相关知识,请参考[美]Katie Cunningham著《Python入门经典》第三章。
编程要求
本关的编程任务是补全isWin.py文件中的判断语句部分,具体要求如下:
根据输入的jim与jerry的射击得分,若jim得分更高,则赢家为jim,输出jim的名字;若jerry得分更高,则赢家为jerry,输出jerry的名字。
本关涉及的代码文件isWin.py的代码框架如下:
jimscore = int(input())
jerryscore = int(input())
#请在此添加代码,判断若jim的得分jimscore更高,则赢家为jim。若jerry的得分jerryscore更高,则赢家为jerry并输出赢家的名字。
#********** Begin #
#* End **********#
print(winner)
测试说明
本文的测试文件是src/step3/isWin.py,具体测试过程如下:
读者将 src/step3/isWin.py中的代码补充完毕,然后点击评测,平台自动编译运行 isWin.py ,并以标准输入方式提供测评输入;
平台获取程序的输出,然后将其与预期输出对比,如果一致则测试通过;否则测试失败。
以下是平台对src/step3/isWin.py的样例测试集:
测试输入:
13
15
预期输出:
jerry
workYear = int(input())
#请在下面填入如果workYear < 5的判断语句
#********** Begin *********#
if workYear<5:
#********** End ***********#
print("工资涨幅为0")
#请在下面填入如果workYear >= 5 and workYear < 10的判断语句
#********** Begin *********#
elif workYear>=5 and workYear<10:
#********** End ***********#
print("工资涨幅为5%")
#请在下面填入如果workYear >= 10 and workYear < 15的判断语句
#********** Begin *********#
elif workYear>=10 and workYear<15:
#********** End ***********#
print("工资涨幅为10%")
#请在下面填入当上述条件判断都为假时的判断语句
#********** Begin *********#
else:
#********** End ***********#
print("工资涨幅为15%")
任务描述
本关任务:本关主题是通过解决简单问题,实践Python分支结构基础。
仔细阅读背景知识,学习Python分支结构的语法构成及语义,学会分支结构如何编排语句的执行顺序,以及实际问题哪些解决方案需要用分支结构来表达。完成下面的实训。
这些实训中,请在指定的位置编写程序,得到正确的输出。
相关知识
(略)
编程要求
根据提示,在右侧编辑器Begin-End处补充代码,完成如下要求:
第一题
有31天的月份为[1,3,5,7,8,10,12]月
请编写程序,输入1~12的整数,若它对应的月份为31天则输出yes,否则输出no。
第二题
气象预报时,一般按照风速对飓风进行分级,下表给出对应关系。
风速 74-95 96-110 111-130 131-154 155及以上
级别 1 2 3 4 5
请编写程序,根据用户输入的风速,输出对应的飓风等级。
jimscore = int(input())
jerryscore = int(input())
#请在此添加代码,判断若jim的得分jimscore更高,则赢家为jim。若jerry的得分jerryscore更高,则赢家为jerry并输出赢家的名字。
#********** Begin *********#
winner='jim' if jimscore>jerryscore else 'jerry'
#注意字符串的表达
#********** End **********#
print(winner)
# -*- coding: utf-8 -*-
"""
Created on Sat Aug 29 09:49:20 2020
@author: hzh
"""
# 第一题
month = int(input())
# 31天的月份:1~7之间的奇数月、8~12之间的偶数月
# 如果是31天的月份输出yes
####### begin #######
if (1<=month<=7 and month%2==1) or (8<=month<=12 and month%2==0):
print('yes')
####### end #########
# 如果不是31天的月份,输出no
####### begin #######
else:
print('no')
####### end #########
print('\n***********************\n')
#第二题
# 从测试集得到风速
velocity = int(input())
# 默认是0级
rank = 0
# 如果风速在74到95之间,输出1
####### begin #######
if 74<=velocity<=95:
rank=1
####### end #########
# 如果风速在96到110之间,输出2
####### begin #######
elif 96<=velocity<=110:
rank=2
####### end #########
# 如果风速在111到130之间,输出3
####### begin #######
elif 111<=velocity<=130:
rank=3
####### end #########
# 如果风速在131到154之间,输出4
####### begin #######
elif 131<=velocity<=154:
rank=4
####### end #########
# 如果风速大于155,输出5
####### begin #######
elif velocity>=155:
rank=5
else:
rank=0
####### end #########
print(rank)
任务描述
本关任务:掌握python单分支、多分支程序设计基本入门。
相关知识
为了完成本关任务,你需要掌握:1.if–else二分支,2.if–else多分支
#####if-else语句
在python中,if-else语句用于控制程序执行,基本形式为:
if 判断语句1:
step1
else:
step2
当判断语句1为真时,执行step1,不成立执行step2。
elif语句
当判断条件有多个时,则用elif语句嵌套解决,基本形式为:
if 判断语句1:
step1
elif 判断语句2:
step2
elif 判断语句3:
step3
……
else:
step
当判断语句1为真时,执行step1,判断语句1为假,判断语句2为真时执行step2,……,最后判断语句都为假时执行step。
编程要求
根据提示,在右侧编辑器补充代码,完成分支程序设计。
第1题:
闰年的判断:判断某一年是否是闰年,是则输出yes,否则输出no。
第2题:
月份天数判断:从键盘输入月份,判读该月份是否是30天,是则输出yes,否则输出no。
第3题:
成绩等级判断:从键盘输入学生成绩,如果学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
第4题:
气象预报时,一般按照风速对飓风进行分级,下表给出对应关系。
风速 74-95 96-110 111-130 131-154 155及以上
级别 1 2 3 4 5
请编写程序,根据用户输入的风速,输出对应的飓风等级。
# -*- coding: utf-8 -*-
"""
Created on Tue Sep 8 06:29:54 2020
@author: hzh
"""
#第1题:
year = int(input())
# 如果是闰年输出yes
####### begin #######
if (year%4==0 and year%100!=0) or year%400==0:
print('yes')
####### end #########
# 如果不是闰年,输出no
####### begin #######
else:
print('no')
####### end #########
#第2题:
month = int(input())
# 30天的月份:4,6,9,11
# 如果是30天的月份输出yes
####### begin #######
if month==4 or month==6 or month==9 or month==11:
print('yes')
####### end #########
# 如果不是30天的月份,输出no
####### begin #######
else:
print('no')
####### end #########
#第3题:
# 从键盘输入成绩,等级默认为0级
scores = int(input())
grade = '0'
#如果成绩>=90分的输出'A'
####### begin #######
if scores>=90:
garde='A'
####### end #########
#否则成绩60-89分之间的用B表示
elif 60<=scores<=89:
grade='B'
####### end #########
#60分以下的用C表示
else:
grade='C'
####### end #########
print(grade)
#第4题:
# 从键盘输入风速
velocity = int(input())
# 默认是0级
rank = 0
# 如果风速在74到95之间,输出1
####### begin #######
if 74<=velocity<=95:
rank=1
####### end #########
# 如果风速在96到110之间,输出2
####### begin #######
elif 96<=velocity<=110:
rank=2
####### end #########
# 如果风速在111到130之间,输出3
####### begin #######
elif 111<=velocity<=130:
rank=3
####### end #########
# 如果风速在131到154之间,输出4
####### begin #######
elif 131<=velocity<=154:
rank=4
####### end #########
# 如果风速大于155,输出5
####### begin #######
elif velocity>=155:
rank=5
####### end #########
else:
rank=0
print(rank)
任务描述
本关任务:本关主题是通过解决简单问题,实践Python分支结构基础训练。
相关知识(略)
根据提示,在右侧编辑器Begin-End处补充代码,完成如下要求:
第1题
摄氏温度转换为华氏温度的公式是:F=
5
9
C+32,热力学上的绝对零度相当于摄氏-273.15℃,低于这个温度意义不大。请完成程序,将有意义的摄氏温度转换成对应的华氏温度,如果是无意义的数据结果输出为None。
第2题
请编写程序,计算给定的实数的绝对值。(要求:不准使用abs函数)
第3题
请完成程序,对给定的一对整数,按从小到大排序。
第4题
请完成程序,对给定的三个整数,按从小到大排序。
第5题
请完成程序,对给定的一对整数,计算第一个数除以第二个数的结果,结果是实数。
第6题
请完成程序,对给定的三个实数,假设第一个实数是二次项系数、第二个是一次项系数、第三个是常数项,请计算以这三个实数为系数的一元二次方程的实根,若方程无实根, 输出为None。
第7题
请完成程序,实现以下函数f的计算能力,对给定的x值,计算正确的f(x)结果。
f(x)=
⎩
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎨
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎧
x−2
x+3
x
2
∣x∣
x
3
3x−4
4x+1
−10⩽x<−8
−8⩽x<−6
−6⩽x⩽−2
−2
4
编程要求
根据提示,在右侧编辑器补充代码,计算并输出数组的平均值和最大值。
# -*- coding: utf-8 -*-
"""
Created on Tue Sep 8 07:49:34 2020
@author: hzh
"""
#定义一个格式化输出函数
def print_(x):
if type(x) == float:
print("%.4f" % x)
else:
print(x)
#第1题
#数据来源于列表
for temp in [-280, -100, 0, 20, 120, 200]:
#请在下面编写代码
# ********** Begin ********** #
if temp<-273.15:
F=None
else:
F=9*temp/5+32
# ********** End ********** #
#请不要修改下面的代码
print_(F)
print('\n***********************\n')
#第2题
#数据来源于列表
for number in [-101.23, -3.14, 0, 12.55, 1908]:
# 请在下面编写代码
# ********** Begin ********** #
if number<0:
number=0-number
# ********** End ********** #
# 请不要修改下面的代码
print_(number)
print('\n***********************\n')
#第3题
#数据来源于列表
for (num1, num2) in [(12, 34), (-6, -7),(-12, 23), (-273, 0), (0, 199)]:
# 请在下面编写代码
# ********** Begin ********** #
if num1>num2:
num1,num2=num2,num1
# ********** End ********** #
# 请不要修改下面的代码
print(num1, ' ', num2)
print('\n***********************\n')
#第4题
#数据来源于列表
for (num1, num2, num3) in [(-231, -321, 123), (100, 0, -99), (-980, -1002, -1), (6,1,2017)]:
# 请在下面编写代码
# ********** Begin ********** #
if num1<num2:
if num3<num2:
num2,num3=num3,num2
if num2<num1:
if num1<num3:
num1,num2=num2,num1
elif num3<num2:
num1,num2,num3=num3,num2,num1
else:
num1,num2,num3=num2,num3,num1
# ********** End ********** #
# 请不要修改下面的代码
print(num1, num2, num3)
print('\n***********************\n')
#第5题
#数据来源于列表
for (num1, num2) in [(10, 5), (12,34), (89,0), (-100, 23), (789, -123)]:
# 请在下面编写代码
# ********** Begin ********** #
if num2==0:
print('None')
else:
result=num1/num2
# ********** End ********** #
# 请不要修改下面的代码
print_(result)
print('\n***********************\n')
#第6题
#数据来源于列表
for (a, b, c) in [(1,2,1), (1,-2,1), (1,2,-3), (12, 34, 56), (78, 89, 100)]:
# 请在下面编写代码
# ********** Begin ********** #
x=b**2-4*a*c
if x>=0:
root1=(-b+x**0.5)/2*a
root2=(-b-x**0.5)/2*a
else:
root1=None
root2=None
# ********** End ********** #
# 请不要修改下面的代码
print(root1, root2)
print('\n***********************\n')
#第7题
#数据来源于列表
for x in [-9, -8, -7, -6, -5, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8]:
# 请在下面编写代码
# ********** Begin ********** #
if -10<=x<-8:
fx=x-2
if -8<=x<-6:
fx=x+3
if -6<=x<=-2:
fx=x**2
if -2<x<2:
fx=abs(x)
if 2<=x<=4:
fx=x**3
if 4<x<=6:
fx=3*x-4
if 6<x<=8:
fx=4*x+1
# ********** End ********** #
# 请不要修改下面的代码
print_(fx)
相关知识 (略)
编程要求
根据提示,在右侧编辑器Begin-End处补充代码,完成如下要求:
第一题:BMI 问题的求解
请完成程序,根据下图表格,计算国内与国际BMI的值
,
已知某人的体重和身高,根据上表计算国内与国外的BMI,并输出结果。
提示:BMI= 体重/(身高的平方)
第二题:个人所得税的计算问题
在指定位置编写代码,实现一个函数,功能是根据下表计算个人所得税。
,
注:具体输出请查看测试集。
第三题:剪刀石头布的游戏问题
1、编写程序实现:剪刀、石头和布的游戏。
规则说明:1)两个人出的相同的为平局;
2)布胜过石头,石头胜过剪刀,剪刀胜过布。
提示:玩家:p1,p2
‘剪刀’‘石头’‘布’= ‘j’,‘s’,‘b’
结果: 0:平局,1:p1胜,-1:p1负
# -*- coding: utf-8 -*-
"""
Created on Fri Aug 28 15:27:35 2020
@author: hzh
"""
#第一题
#数据来源列表,每组数据输出一个结果
for (Weight,Height) in [(60,1.65),(40,1.60),(80, 1.70),(75,1.83),(88,1.80)]:
bmi = Weight / pow(Height, 2)
wto, dom = " ", " "
#请在下面编写代码
#wto, dom的结果为字符串类型的"肥胖","偏瘦","偏胖","正常"
# ********** Begin ********** #
if bmi<18.5:
wto="偏瘦"
dom="偏瘦"
if 18.5<=bmi<=25:
wto="正常"
if 18.5<=bmi<=24:
dom="正常"
if 25<bmi<30:
wto="偏胖"
if 24<bmi<28:
dom="偏胖"
if bmi>=30:
wto="肥胖"
if bmi>=28:
dom="肥胖"
# ********** End ********** #
#请不要修改下面的代码
print("BMI 指标为:国际'{0}', 国内'{1}'".format(wto, dom))
print('\n******************************\n')
#第二题
#数据来源列表,每组数据输出一个结果
for salary in [-1000, 0, 40000, 47450, 98000, 114650, 14980, 17470, 25670, 311950, 360000]:
# 请在下面编写代码
# ********** Begin ********** #
if 0<=salary<=47449:
salaTax=0.22*salary
elif 47450<=salary<=114649:
salaTax=0.25*salary
elif 114650<=salary<=174699:
salaTax=0.28*salary
elif 174700<=salary<=311949:
salaTax=0.33*salary
elif salary>=311950:
salaTax=0.35*salary
else:
salaTax=0
# ********** End ********** #
# 请不要修改下面的代码
print("%.4f" %salaTax) #输出个人所得税salaTax
print('\n***********************\n')
#第三题
#数据来源列表,每组数据输出一个结果
for (p1, p2) in [('s', 'j'), ('b', 'j'),('j', 'j'), ('b', 's')]:
# 请在下面编写代码
#p1,p2代表玩家1,玩家2,'s','j','b' 分别代表石头、剪刀和布
#game=-1,0,1分别代表p1输局,平局,赢局
# ********** Begin ********** #
if p1==p2=='j' or p1==p2=='s' or p1==p2=='b':
game=0
elif (p1=='j' and p2=='b') or (p1=='s' and p2=='j') or (p1=='b' and p2=='s'):
game=1
else:
game=-1
# ********** End ********** #
# 请不要修改下面的代码
print(game)
print('\n***********************\n')
任务描述
本关任务:编写一个能判断三角形类型的小程序。
输入三个数值,判断其是否能构成三角形的三条边。如果能构成,判断其是否等边三角形、直角三角形还是普通三角形。
相关知识
为了完成本关任务,你需要掌握:1.如何写条件,2.多分支语句。
条件表达式
条件表达式中可以包含关系运算和逻辑运算
关系运算有大于>、等于==,小于<等操作符,结果为True或False
逻辑运算有逻辑与and,逻辑或or和逻辑非not
多分支语句
多分支语句的语法格式为:
if <条件1>:
<语句块1>
elif <条件2>:
<语句块2>
……
else:
<语句块N>
Python依次评估寻找第一个结果为True的条件,执行该条件下的语句块,同时结束后跳过整个if-elif-else结构,执行后面的语句。
如果没有任何条件成立,else下面的语句块被执行。
else子句是可选的
编程要求
根据提示,在右侧编辑器补充代码,判断三角形类型。
测试说明
平台会对你编写的代码进行测试:
测试输入:3,4,5;
预期输出:
直角三角形
测试输入:6,6,6;
预期输出:
等边三角形
测试输入:1,2,3;
预期输出:
无法构成三角形
测试输入:3,4,6;
预期输出:
普通三角形
x=eval(input("边长一"))
y=eval(input("边长二"))
z=eval(input("边长三"))
#代码开始
#代码结束
if (x**2+y**2)==z**2 or (x**2+z**2)==y**2 or (y**2+z**2)==x**2:
print('直角三角形')
elif x==y==z:
print('等边三角形')
elif (x+y<=z or abs(x-y)>=z) or (z+y<=x or abs(z-y)>=x) or (x+z<=y or abs(x-z)>=y):
print('无法构成三角形')
else:
print('普通三角形')
任务描述
有一分段函数如图所示
分段函数
本关任务:编写一个能根据x的值计算y值的小程序。
相关知识
为了完成本关任务,你需要掌握:多分支结构
多分支结构
语法格式
if <条件1>:
<语句块1>
elif <条件2>:
<语句块2>
……
else:
<语句块N>
Python依次评估寻找第一个结果为True的条件,执行该条件下的语句块,同时结束后跳过整个if-elif-else结构,执行后面的语句。
如果没有任何条件成立,else下面的语句块被执行。
else子句是可选的
编程要求
根据提示,在右侧编辑器补充代码,实现上图所示的分段函数。
测试说明
平台会对你编写的代码进行测试:
测试输入:50;
预期输出:
149
测试输入:-5;
预期输出:
-5
测试输入:5;
预期输出:
9
x=eval(input())
#代码开始
if x<1:
y=x
if 1<=x<10:
y=2*x-1
if x>=10:
y=3*x-1
#代码结束
print("{:.2f}".format(y))
任务描述
本关任务:长沙市按照阶梯电价计算电费,第一档是200度及以下的0.588/度。第二,三档分季节,春秋季:第二档是200度以上-350度的0.638/度,第三档是350度以上0.888/度。冬夏季:第二档是200度以上-450度的0.638/度,第三档是450度以上0.888/度。根据输入的上月电表度数、本月电表度数和月份来计算电费。3-5月份为春季,6-8月份为夏季,9-11为秋季,12-2月份为冬季。
输入居民的上月和本月的电表度数,计算用电度数和电费。
测试说明
平台会对你编写的代码进行测试:
测试输入:
上月电表读数200
本月电表读数800
月份7
预期输出:
用电度数600.0
电费410.30
测试输入:
上月电表读数150
本月电表读数450
月份4
预期输出:
用电度数300.0
电费181.40
提示:
哪个条件嵌条在哪个条件里面,需要考虑清楚
sy=eval(input("输入上月电表度数"))
by=eval(input("输入本月电表度数"))
yf=eval(input("输入月份"))
#代码开始
ds=by-sy
if ds<=200:
df=ds*0.588
if 3<=yf<=5 or 9<=yf<=11:
if 200<ds<=350:
df=(ds-200)*0.638+0.588*200
if ds>350:
df=(ds-350)*0.888+0.588*200+0.638*150
if 6<=yf<=8 or 1<=yf<=2 or yf==12:
if 200<ds<=450:
df=(ds-200)*0.638+200*0.588
if ds>450:
df=(ds-450)*0.888+200*0.588+250*0.638
#代码结束
print("用电度数{:.2f}电费{:.2f}".format(ds,df))
任务描述
本关任务:编写一个计算水费的小程序。
长沙市水费计量实施阶梯式水价制度:对四口之家及以下以户为单位进行计量,五口之家及以上按人均计量办法。
对四口之家及以下户:第一级水价为15吨及以下,按2.58元每吨计费;第二级水价为22吨及以下,按3.34元每吨计费;第二级水价为超过22吨,按4.09元每吨计费。
对五口之家及以上户:第一级水价为每人每月4吨及以下,按2.58元每吨计费;第二级水价为每人每月5吨及以下,按3.34元每吨计费;第二级水价为超过每人每月5吨,按4.09元每吨计费。
此外,对于低保居民,每户每月减免6立方米的水费
编程要求
根据提示,在右侧编辑器补充代码,输入上月水表读数、本月水表读数、家庭人数、是否低保(y/n),计算并输出用水度数和水费。
测试说明
平台会对你编写的代码进行测试:
测试输入:输入上月水表吨数10
输入本月水表吨数40
输入家庭人数3
是否低保(y/n)y
预期输出:
用水吨数(减免后)24.00水费70.26
测试输入:输入上月水表吨数30
输入本月水表吨数80
输入家庭人数6
是否低保(y/n)n
预期输出:
用水吨数(减免后)50.00水费163.76
测试输入:输入上月水表吨数10
输入本月水表吨数13
输入家庭人数6
是否低保(y/n)y
预期输出:
用水吨数(减免后)-3.00水费0
sy=eval(input("输入上月水表吨数"))
by=eval(input("输入本月水表吨数"))
rs=eval(input("输入家庭人数"))
db=input("是否低保(y/n)")
#代码开始
sl=by-sy
if db=='y':
sl=sl-6
if rs<=4:
if sl<=15:
sf=2.58*sl
if 15<sl<=22:
sf=3.34*(sl-15)+2.58*15
if sl>22:
sf=4.09*(sl-22)+3.34*7+2.58*15
if rs>=5:
if sl/rs<=4:
sf=2.58*sl
if 4<sl/rs<=5:
sf=3.34*sl
if sl/rs>5:
sf=4.09*sl
if sl<0:
sf=0
#代码结束
print("用水吨数(减免后){:.2f}水费{:.2f}".format(sl,sf))
任务描述
本关任务:编写一个能计算手机话费的小程序。
某用户办理了中国移动128元的5g套餐,套餐内包含每月30g流量和500分钟的通话时间。通话超出时间,按0.15元每分钟计算。套餐流量超出后,5元1GB.满15元后,按照3元1G进行计费。
输入该用户使用的流量和通话时间,计算其费用
测试说明
平台会对你编写的代码进行测试:
测试输入:
流量20
通话时间300
预期输出:
费用128
流量60
通话时间600
预期输出:
费用239
ll=eval(input("流量"))
thsj=eval(input("通话时间"))
#代码开始
#代码结束
if ll<=30 and thsj<=500:
fy=128
if ll<=30 and thsj>500:
fy=128+0.15*(thsj-500)
if ll>30 and thsj<=500:
if (ll-30)<=3:
fy=128+(ll-30)*5
if (ll-30)>3:
fy=128+15+(ll-33)*3
if ll>30 and thsj>500:
if (ll-30)<=3:
fy=128+(ll-30)*5+0.15*(thsj-500)
if (ll-30)>3:
fy=128+15+(ll-33)*3+0.15*(thsj-500)
print('费用{:.2f}'.format(fy))
任务描述
。
成年人血压的正常范围是60mmHg<舒张压<90mmHg 90mmHg<收缩压<140mmHg。
若舒张压大于等于90或收缩压大于等于140为高血压。
若舒张压小于60或收缩压小于90为低血压。
输入舒张压和收缩压,判断其属于高血压、低血压或正常血压。
例如,输入70 100显示正常血压
输入100 130 显示高血压
输入50 100显示低血压。
本关任务:编写一个程序,输入舒张压和收缩压,判断其属于高血压、低血压或正常血压。
测试说明
平台会对你编写的代码进行测试:
测试输入:70 100;
预期输出:正常血压
测试输入:100 130
预期输出:
高血压
测试输入:50 100
预期输出:
低血压
x=eval(input())
y=eval(input())
#代码开始
if x>=90 or y>=140:
print('高血压')
elif x<60 or y<90:
print('低血压')
else:
print('正常血压')
#代码结束
任务描述
对于在职党员,工资收入在3000元及以下,交纳月工资收入的0.5%; 3000元以上至5000元(含5000元)者,交纳1%; 5000元以上至10000元(含10000元)者,交纳1.5%; 10000元以上者,交纳2%。
对于离退休党员,离退休费总额5000元以下(含5000元)的按0.5%交纳党费,5000元以上的按1%交纳党费。
本关任务:编写程序,输入是否退休(y或Y表示退休)和收入,输出应缴纳党费
注意:党费不是累进计算,而是直接按比例收取,例如,在职党员,收入8000,直接按1.5%收取
离退休党员,收入6000,直接按1%收取
测试说明
平台会对你编写的代码进行测试:
测试输入:n 8000
预期输出:120.00
测试输入:y 8000
预期输出:80.00
测试输入:n 2000
预期输出:10.00
测试输入:y 2000
预期输出:10.00
ch=input("")
s=eval(input(""))
#代码开始
if ch=='n':
if s<=3000:
df=s*0.005
if 3000<s<=5000:
df=s*0.01
if 5000<s<=10000:
df=s*0.015
else:
if s<=5000:
df=s*0.005
if s>5000:
df=s*0.01
#代码结束
print("{:.2f}".format(df))
任务描述
某公司按小时计费工资。规定每周5个工作日,每天工作8小时。工作日超时工作工资为正常工资的1.5倍。休息日工资,4小时内为正常工资的2倍,超过4小时的部分为正常工资的3倍。
输入每小时工资,员工每周的工作日工作小时数和休息日工作小时数,计算其该周工资
例如每小时工资30元。工作日50小时,休息日8小时,其工资为2250.00元
4030+10301.5+4302+430*3=2250
本关任务:输入每小时工资,员工每周的工作日工作小时数和休息日工作小时数,计算其该周工资
测试说明
平台会对你编写的代码进行测试:
测试输入:
工资标准30
工作日工作时间50
休息日工作时间8
预期输出:
工资2250.00
测试输入:
工资标准20
工作日工作时间80
休息日工作时间40
预期输出:
工资4320.00
gzbz=eval(input("工资标准"))
gzr=eval(input("工作日工作时间"))
xxr=eval(input("休息日工作时间"))
#代码开始
if gzr<=40:
if xxr==0:
gz=gzr*gzbz
if 0<xxr<=4:
gz=gzr*gzbz+xxr*2*gzbz
if xxr>4:
gz=gzr*gzbz+(xxr-4)*3*gzbz+4*2*gzbz
if gzr>40:
if xxr==0:
gz=40*gzbz+(gzr-40)*1.5*gzbz
if 0<xxr<=4:
gz=40*gzbz+xxr*2*gzbz+(gzr-40)*1.5*gzbz
if xxr>4:
gz=40*gzbz+(xxr-4)*3*gzbz+4*2*gzbz+(gzr-40)*1.5*gzbz
#代码结束
print("工资{:.2f}".format(gz))
任务描述
本关任务:输入一个整数,判断其是不是正数。
如果是正数,输出正数并换行。否则,什么都不做。
编程要求
本关只有一个文件main.py。完善该文件已完成任务。
#######Begin your code here#######
a=eval(input())
if a>0:
print("正数\n")
#######End your code here#######
任务描述
本关任务:编写单按钮开关灯光控制程序。
相关知识
单按钮控制是非常常见的控制程序。程序实现时首先判断灯光当前状态,根据状态的不同来控制灯光状态的变化。
测试说明
平台会对你编写的代码进行测试,若是与预期输出相同,则算通关。
light=input()
语句从测试集中读入light的状态,测试集为:“开"或"关”
如果读入ligth值为"开",则应将light值设置为"关"
相反读入ligth值为"关",则应将light值设置为"开"
测试输入:关;
预期输出:
开
测试输入:开;
预期输出:
关
light=input() #从测试集读入light值,此部分代码不用修改
######begin 从此处向下,开始你的编码,根据ligth的值进行输出###
if light=='开':
print('关')
if light=='关':
print('开')
#####end###
任务描述
本关任务:编写一个能求解一元二次方程的小程序。
一元二次方程ax
2
+bx+c=0
a、b、c三个系数由测试集读入,根据三个系数来求解x的值则应为:
1、a=0 时输出: x=−c/b
2、b
2
−4ac=0时输出: x1=x2=−b/2a
3、b
2
−4ac>0时输出: x1=(−b+sqrt(b
2
−4ac))/2a,x2=(−b−sqrt(b
2
−4ac))/2a
4、b
2
−4ac<0时输出: x1=(−b/2a+sqrt(4ac−b
2
)/2aj),x2=(−b/2a−sqrt(4ac−b
2
)/2aj)
其中,
x1的实部为−b/2a,虚部为sqrt(4ac−b
2
)/2a
x2的实部为−b/2a,虚部为−sqrt(4ac−b
2
)/2a
这里sqrt的使用方法见相关知识1,复数的生成方法见相关知识2
例如:
测试集数据读入a、b、c的值为
0; 2; 4
输出为
x= -2.0 #使用 print(“x=”,x) 语句输出
测试集数据读入a、b、c的值为
1; -1; -2
输出为
x1= 2.0 x2= -1.0 #使用 print(“x1=”,x1,“x2=”,x2) 语句输出
测试集数据读入a、b、c的值为
1; 2; 3
输出为
x1= (-1+1.4142135623730951j) x2= (-1-1.4142135623730951j)
相关知识
1、求平方根:sqrt的用法
sqrt是math库里的一个函数,求平方根,使用前需要引入math,
本题目在第一行已经为大家引入该模块,后面直接使用math.sqrt函数即可,不用再次import math
使用方法如下:
import math
a=3
b=4
x=math.sqrt(a2+b3) #调用math.sqrt求根下 a平方加b的三次方
print(‘x=’,x)
x的值就是根下a平方加b的三次方
2、复数生成:complex的用法
complex是python中生成一个复数的方法。使用方法如下:
a=2
b=3
c=complex(a,b) #调用complex生成了一个实部为a,虚部为b的复数c
print©
则会输出:
(2+3j)
####测试说明
平台会对你编写的代码进行测试,若是与预期输出相同,则算通关。
import math #引入math模块
a=float(input()) #读入测试变量a
b=float(input()) #读入测试变量b
c=float(input()) #读入测试变量c
#**********begin*******以下编写代码实现
if a==0:
x=-c/b
print("x=",x)
if (b**2-4*a*c)==0 and a!=0:
x1=-b/2*a
x2=-b/2*a
print("x1=",x1,"x2=",x2)
if (b**2-4*a*c)>0 and a!=0:
x1=(-b+math.sqrt(b**2-4*a*c))/2*a
x2=(-b-math.sqrt(b**2-4*a*c))/2*a
print("x1=",x1,"x2=",x2)
if (b**2-4*a*c)<0 and a!=0:
n=-b/(2*a)
m=math.sqrt(4*a*c-b**2)/2*a
x1=complex(n,m)
x2=complex(n,-m)
print("x1=",x1,"x2=",x2)
#**********end***********
任务描述
本关任务:编写一个能输入分数后输出等级的小程序。
分数有score=input()从测试集中读取,等级根据读取的分数进行划分
90<=score<=100 A
80<=score<90 B
70<=score<80 C
60<=score<70 D
score<60 E
测试说明
平台会对你编写的代码进行测试,若是与预期输出相同,则算通关。
测试输入:90;
预期输出:
等级A
测试输入:75;
预期输出:
等级C
score=float(input()) #读入测试变量score
#**********begin*******以下编写代码实现
if 90<=score<=100:
print('等级A')
if 80<=score<90:
print('等级B')
if 70<=score<80:
print('等级C')
if 60<=score<70:
print('等级D')
if score<60:
print('等级E')
#**********end***********
任务描述
本关任务:输入3个数,按从大到小顺序依次输出。
输出为1行,每两个数之间用1个空格进行分隔。
相关知识
想必你已经接触过3个数求最大值的“标准”做法。
a,b,c = list(map(int, input().split()))
r = a;
if r < b:
r = b
if r < c:
r = c
此时r是最大值
特别的,这其实是C++语言的标准做法,Python可以更简单
a,b,c = list(map(int, input().split()))
r = max(a,b,c)
现在的任务是从大到小依次输出,也就是说仅求出最大值是不够的。
还要做什么?
#######Begin your code here#######
a,b,c = list(map(int, input().split()))
x1=max(a,b,c)
if x1==a:
x2=max(b,c)
if x2==b:
print(a,b,c)
if x2==c and x2!=b:
print(a,c,b)
if x1==b and x1!=a:
x2=max(a,c)
if x2==a:
print(b,a,c)
if x2==c and x2!=a:
print(b,c,a)
if x1==c and x1!=a and x1!=b:
x2=max(a,b)
if x2==b:
print(c,b,a)
if x2==a and x2!=b:
print(c,a,b)
#######End your code here#########
任务描述
本关任务:输入一个整数,判断其是水仙花数,还是四叶玫瑰数,或者都不是。
对每个输入,输出一行。如果是水仙花数,就输出narcissistic;如果是四叶玫瑰数,就输入rose;如果都不是,就输出neither。
相关知识
水仙花数指一个三位数,满足如下条件:
假设该三位数记作
abc
,则
abc
=a
3
+b
3
+c
3
四叶玫瑰数指一个四位数,满足如下条件:
假设该四位数记作
abcd
,则
abcd
=a
4
+b
4
+c
4
+d
4
#######Begin your code here#######
x=input()
if len(x)==3 and (eval(x[0])**3+eval(x[1])**3+eval(x[2])**3)==eval(x):
print("narcissistic")
elif len(x)==4 and (eval(x[0])**4+eval(x[1])**4+eval(x[2])**4+eval(x[3])**4)==eval(x):
print("rose")
else:
print("neither")
#######End your code here#########