第1关:顺序结构
任务描述
程序最基本的结构就是顺序结构,顺序结构就是程序按照语句顺序,从上到下依次执行各条语句。
本关要求学习者理解顺序结构,并对输入的三个数changeone
、changetwo
、plus
先交换changeone
、changetwo
值,然后再计算changeone + plus
的值。
相关知识
要实现上述功能,需要严格按照顺序来实现每一个步骤。如果顺序错误,那么便会得出错误的结果。
顺序结构
顺序结构如下图1所示:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4m0PJzAB-1665416905234)(E:\coding_file\python\educoder\img\顺序结构.jpg)]
图 1 顺序结构示意图
假设存在a
、b
、c
三个整数,如果按照以下顺序执行:
c = a + bb = c - aa = b + c
与按照以下顺序:
b = c - aa = b + cc = a + b
得出的a
、b
、c
的结果是不同的。
交换数值
假设存在整数a = 10
、b = 20
,交换a
、b
数值的语句如下:
tmp = aa = bb = 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/inTurntest.py
,测试过程如下:
学习者将src/step1/inTurn.py
中的代码补充完毕,然后点击评测。平台自动编译运行inTurntest.py
,并以标准输入方式提供测评输入;平台获取程序的输出,然后将其与预期输出对比。如果一致则测试通过,否则测试失败。
以下是平台对src/step1/inTurntest.py
的样例测试集:
测试输入:
2510
预期输出:
15
参考答案
changeOne = int(input())changeTwo = int(input())plus = int(input())# 请在此添加代码,交换changeOne、changeTwo的值,然后计算changeOne、plus的和result的值########## Begin ##########changeOne, changeTwo = changeTwo, changeOneresult = changeOne + plus########## End ##########print(result)
第2关:选择结构:if-else
任务描述
程序的第二大结构就是选择结构。在此结构中,程序通过对一个代码块或者几个代码块的判断来决定接下来运行哪一个代码块。以下场景还原了选择结构的现实场景: 某公司根据员工的工龄来决定员工工资的涨幅,如下所示:
工龄大于等于5
年并小于10
年时,涨幅是现工资的5%
;工龄大于等于10
年并小于15
年时,涨幅是现工资的10%
;工龄大于等于15
年时,工资涨幅为15%
。
本关的任务是让学习者理解选择结构,学会使用最基本的选择语句:if-else
语句。
相关知识
选择结构
选择结构如下图1所示:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-w6Wsoim8-1665416905235)(/api/attachments/169899)]
图 1
if-else
语句
在 Python 中,if-else
语句用于控制程序执行,基本形式为:
if 判断语句1:step1else:step2
当判断语句1
为真时,执行step1
,否则执行step2
。例如:
name = 'choose'#判断变量name是否为'choose'if name == 'choose':print("条件成立")else:print("条件不成立")
elif
语句
当判断条件有多个时,则用elif
语句,基本形式为:
if 判断语句1:step1elif 判断语句2:step2elif 判断语句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/choosetest.py
,具体测试过程如下:
学习者将src/step2/choose.py
中的代码补充完毕,然后点击评测。平台自动编译运行choosetest.py
,并以标准输入方式提供测评输入;平台获取程序的输出,然后将其与预期输出对比。如果一致则测试通过,否则测试失败。
以下是平台对src/step2/choosetest.py
的样例测试集:
测试输入:
10
预期输出:
工资涨幅为10%
参考答案:
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%")
第3关:选择结构 : 三元操作符
任务描述
程序中的选择结构中除了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/isWintest.py
,具体测试过程如下:
学习者将src/step3/isWin.py
中的代码补充完毕,然后点击评测。平台自动编译运行isWintest.py
,并以标准输入方式提供测评输入;平台获取程序的输出,然后将其与预期输出对比。如果一致则测试通过,否则测试失败。
以下是平台对src/step3/isWintest.py
的样例测试集:
测试输入:
1315
预期输出:
jerry
参考答案
jimscore = int(input())jerryscore = int(input())# 请在此添加代码,判断若jim的得分jimscore更高,则赢家为jim,若jerry的得分jerryscore更高,则赢家为jerry,并输出赢家的名字########## Begin ##########winner = 'jim' if jimscore > jerryscore else 'jerry'########## End ##########print(winner)