由于题目不难且数量较多,这里就不放每一关的相关知识了,一共24道题。
本关任务是在hello_python.py
中填写相应的打印语句,实现打印输出Hello Python
的功能。**(请仔细阅读下面的编程要求,注意区分大小写)**具体要求如下:
1.交互环境下的编程(在“命令行”窗口完成),步骤如下:
打开右侧"命令行"窗口,自动连接后台容器;进入容器终端,键入python
,回车后系统自动输出 Python 命令提示符>>>
,进入交互编程环境;
在交互式编程环境中,使用 Python 打印函数print
及相应参数,打印输出Hello Python
;
在交互式编程环境中,完成几项四则运算任务,包括10+4
,10-4
,10*4
和10/4
。
2.代码文件方式编程(在“代码”窗口完成),步骤如下:
hello_python
代码文件中Begin-End
区间补充代码,使用 Python 打印函数print
及相应参数,实现打印输出Hello Python
的功能。hello_python.py
的代码框架如下:
#coding=utf-8
#请在此处添加代码完成输出“Hello Python”,注意要区分大小写!
###### Begin ######
print('Hello Python')
###### End ######
根据提示,在右侧编辑器Begin-End
区间补充代码,观察测试输入输出的特点,通过format()
方法,按要求输出指定语句。
#coding=utf-8
#请在此处补充代码,按要求完成输出
###### Begin ######
name=input("请输入一个人的名字:")
country = input('请输入一个国家的名字:')
print("世界那么大,{0}想去{1}看看。".format(name,country))
###### End ######
根据提示,在右侧编辑器Begin-End
区间补充代码,根据用户输入的人名给出一些不同的回应。
提示:第二句和第三句可以模仿已经给出的第一句的部分代码,注意观察后两句话的特点,可以发现第一个字,是通过字符串索引提取。 例如:
输入姓名:郭靖
输出:郭靖同学,学好Python,前途无量!
郭大侠,学好Python,大展拳脚!
靖哥哥,学好Python,人见人爱!
#coding=utf-8
#请在此处补充代码,按要求完成输出
###### Begin ######
name=input("输入姓名:")
print("{}同学,学好Python,前途无量!".format(name)) #请将命令行补充完整
print('{}大侠,学好Python,大展拳脚!'.format(name[0])) #请将命令行补充完整
print('{}哥哥,学好Python,人见人爱!'.format(name[1:])) #请将命令行补充完整
###### End ######
根据提示,改正右侧编辑器中代码的缩进错误,使其能够正确运行,并输出结果。
#有错误的函数1
def wrong1():
print("wrong1")
print("这里有一个错误缩进")
#有错误的函数2
def wrong2():
print("wrong2")
if False:
print("这个不应该输出")
print("这个也不应该输出")
#有错误的函数3
def wrong3():
print("wrong3");print("hello world")
#这里是调用三个函数的代码
#不要修改
if __name__ == '__main__':
wrong1()
wrong2()
wrong3()
根据提示,改正右侧编辑器的代码,并输出 Python3 的所有保留字。
import keyword
if __name__ == '__main__':
#错误1
str1 = "string"
print(str1)
#错误2
a = 1024
print(a)
#错误3
b = 1.024
print(b)
#错误3
c = False
print(c)
print(keyword.kwlist)
#在此处输出保留关键字
print("end")
根据提示,对右侧编辑器中,部分代码添加注释或者取消注释,使其输出结果与测试说明中的结果一致。
if __name__ == '__main__':
#以下是要修改的代码
print(1)
#print(2)
print(3)
#print(4)
print(5)
#print(6)
print("hello world")
'''
print("这个不应该输出")
'''
#print(1)
#print(2)
print(3)
print(4)
根据提示,在右侧编辑器 Begin-End 区间补充代码,接收用户输入的两个数 a 和 b,对其进行加减乘除四则运算,通过print
函数打印四次运算结果,使结果输出形式与预期输出保持一致。
if __name__ == "__main__":
a = int(input())
b = int(input())
# ********** Begin ********** #
print('%d + %d = %d'% (a,b,a+b))
print('%d - %d = %d'% (a,b,a-b))
print('%d * %d = %d'% (a,b,a*b))
print('%d / %d = %f'% (a,b,a/b))
# ********** End ********** #
本关的编程任务是补全文件的代码内容,输入一个整数,把这个整数换算为月份数和天数,每月以30天计算。 注意:在输出时用format函数将数字转换成字符串输出。
本关涉及的代码文件 的代码框架如下:
# coding = utf-8
data=int(input())
# 请在下面添加代码
###### Begin ######
print('Months=%d Days=%d'%(data//30,data%30))
####### End #######
本关的编程任务是补全文件的代码内容,输入一个任意位数大于0的整数,作为秒数,将此整数换算为天、时、分、秒,并按“天:时:分:秒”的形式显示结果。 注意:在输出时用format函数将数字转换成字符串后输出。
本关涉及的代码文件 的代码框架如下:
# coding = utf-8
data = int(input())
# 请在下面添加代码
###### Begin ######
print('%d秒是%d天%d时%d分%d秒'%(data,data//86400,((data-(data//86400))//3600)%24,((data-(data-(data//86400))//3600)//60)%60,data%60))
####### End #######
本关的编程任务是补全src/Step1/guests.py
文件的代码,实现相应的功能。具体要求如下:
step 1:将guests
列表末尾的元素删除,并将这个被删除的元素值保存到deleted_guest
变量;
step 2:将deleted_guest
插入到 step 1 删除后的guests
列表索引位置为2
的地方;
step 3:将 step 2 处理后的guests
列表索引位置为1
的元素删除;
打印输出 step 1 的deleted_guest
变量;
打印输出 step 3 改变后的guests
列表。
本关涉及的代码文件src/Step1/guests.py
的代码框架如下:
# coding=utf-8
# 创建并初始化Guests列表
guests = []
while True:
try:
guest = input()
guests.append(guest)
except:
break
# 请在此添加代码,对guests列表进行插入、删除等操作
########## Begin ##########
deleted_guest = guests.pop(len(guests)-1)
guests.insert(2,deleted_guest)
guests.pop(1)
print(deleted_guest)
print(guests)
########## End ##########
本关的编程任务是补全src/step2/sortTest.py
文件中的函数部分,要求实现对输入列表source_list
中的元素按照首字母从小到大的顺序进行排序,并且输出排序后的列表。
本关涉及的代码文件src/step2/sortTest.py
的代码框架如下:
# coding=utf-8
# 创建并初始化`source_list`列表
source_list = []
while True:
try:
list_element = input()
source_list.append(list_element)
except:
break
# 请在此添加代码,对source_list列表进行排序等操作并打印输出排序后的列表
########## Begin ##########
source_list.sort()
print(source_list)
'''不能直接print(source_list.sort())
因为source_list.sort()返回的是None'''
########## End ##########
编程任务是补全src/Step3/numbers_square.py
文件的代码内容,实现如下功能:
step1:根据给定的下限数lower
, 上限数upper
以及步长step
,利用range函数生成一个列表;
step2:计算该列表的长度;
step3:求该列表中的最大元素与最小元素之差。
本关的代码文件src/Step3/numbers_square.py
的代码框架如下:
# coding=utf-8
# 创建并读入range函数的相应参数
lower = int(input())
upper = int(input())
step = int(input())
# 请在此添加代码,实现编程要求
########## Begin ##########
alist = list(range(lower,upper,step))
print(len(alist))
print(max(alist)-min(alist))
########## End ##########
本关的编程任务是补全src/Step4/foods.py
文件的代码内容,实现如下功能:
利用切片方法从my_menu
列表中每3个元素取1个,组成子序列并打印输出;
利用切片方法获取my_menu
列表的最后三个元素组成子序列并打印输出。
本关涉及的代码文件src/Step4/foods.py
的代码框架如下:
# coding=utf-8
# 创建并初始化my_menu列表
my_menu = []
while True:
try:
food = input()
my_menu.append(food)
except:
break
# 请在此添加代码,对my_menu列表进行切片操作
########## Begin ##########
alist = my_menu[::3]
blist = my_menu[-3:]
print(alist)
print(blist)
########## End ##########
本关的编程任务是补全src/Step1/menu_test.py
文件的代码内容,实现如下功能:
将输入的菜单menu_list
转换为元组类型;
打印输出生成的元组;
打印输出元组中首字母最大的元素。
本关涉及的代码文件src/Step1/menu_test.py
的代码框架如下:
# coding=utf-8
# 创建并初始化menu_list列表
menu_list = []
while True:
try:
food = input()
menu_list.append(food)
except:
break
# 请在此添加代码,对menu_list进行元组转换以及元组计算等操作,并打印输出元组及元组最大的元素
###### Begin ######
atuple = tuple(menu_list)
print(atuple)
print(max(atuple))
####### End #######
本关的编程任务是补全src/Step2/menu.py
文件的代码,实现相应的功能。具体要求如下:
向menu_dict
字典中添加一道菜名lamb
,它的价格是50
;
获取menu_dict
字典中的fish
的价格并打印出来;
将menu_dict
字典中的fish
的价格改为100
;
删除menu_dict
字典中noodles
这道菜;
输出新的menu_dict
菜单。
本关涉及的代码文件src/Step2/menu.py
的代码框架如下:
# coding=utf-8
# 创建并初始化menu_dict字典
menu_dict = {}
while True:
try:
food = input()
price = int(input())
menu_dict[food]= price
except:
break
# 请在此添加代码,实现对menu_dict的添加、查找、修改等操作,并打印输出相应的值
########## Begin ##########
menu_dict['lamb'] = 50
print(menu_dict['fish'])
menu_dict['fish'] = 100
del menu_dict['noodles']
print(menu_dict)
########## End ##########
本关的编程任务是补全src/Step3/key-values.py
文件的代码,实现相应的功能。具体要求如下:
将menu_dict
菜单的键遍历输出;
将menu_dict
菜单的值遍历输出。
本关涉及的代码文件src/Step3/key_values.py
的代码框架如下:
# coding=utf-8
# 创建并初始化menu_dict字典
menu_dict = {}
while True:
try:
food = input()
price = int(input())
menu_dict[food]= price
except:
break
# 请在此添加代码,实现对menu_dict的遍历操作并打印输出键与值
########## Begin ##########
for i in menu_dict.keys():
print(i)
for i in menu_dict.values():
print(i)
########## End ##########
本关的编程任务是补全src/Step4/menu_nest.py
文件的代码,实现相应的功能。具体要求如下:
menu_total
列表中初始时只包含menu1
字典,menu1
字典中包含两道菜和两道菜的价格;
编程要求是向menu_total
列表中添加另外一个菜单字典menu2
,menu2
菜单中的菜名和menu1
菜单一样,菜的价格是menu1
菜的价格的2倍;
输出新的menu_total
列表。
本关涉及的代码文件src/Step4/menu_nest.py
的代码框架如下:
# coding=utf-8
# 初始化menu1字典,输入两道菜的价格
menu1 = {}
menu1['fish']=int(input())
menu1['pork']=int(input())
# menu_total列表现在只包含menu1字典
menu_total = [menu1]
# 请在此添加代码,实现编程要求
########## Begin ##########
menu2 = {}
menu2['fish'] = menu1['fish']*2
menu2['pork'] = menu1['pork']*2
menu_total = [menu1,menu2]
########## End ##########
# 输出menu_total列表
print(menu_total)
根据右边编辑器中各个函数中的提示,将函数Begin-End
区间代码补充完整,使得程序能够正常运行并输出正确的结果。编辑区的3
个函数,将按照如下顺序被调用:
p = CreatePoint()
PrintPoint(p)
p = IncX(p)
PrintPoint(p)
p = IncY(p)
PrintPoint(p)
提示:后两个函数需要用到函数
_replace()
。 ####测试说明 正确的补充代码后,应该得到的结果:当前位置:x = 0,y = 0
当前位置:x = 1,y = 0
当前位置:x = 1,y = 1
import collections
def CreatePoint():
# ********** Begin ********** #
Point = collections.namedtuple('Point', ['x', 'y'])
p = Point(0, 0)
return p
# ********** End ********** #
def IncX(p):
# ********** Begin ********** #
Point = collections.namedtuple('Point', ['x', 'y'])
p = Point(p.x + 1, p.y)
return p
# ********** End ********** #
def IncY(p):
# ********** Begin ********** #
Point = collections.namedtuple('Point', ['x', 'y'])
p = Point(p.x, p.y + 1)
return p
# ********** End ********** #
def PrintPoint(p):
print("当前位置:x = %d,y = %d" % p)
根据提示,在右侧编辑器Begin-End
区间补充代码,完成函数功能,函数需要读取6
行输入,然后进行如下操作:
注意:行数是从
0
开始的,最后输出import collections def Func(): c = collections.Counter() for i in range(6): data = input() # ********** Begin ********** # if i % 2 == 0: c.update(data) elif i % 2 == 1: c.subtract(data) # ********** End ********** # print(c.most_common())
计数器中的所有元素。
根据提示,补充右侧编辑器Begin-End
区间代码,完成函数功能,函数读取输入的一个数字n(n≥0)
,然后输出一个有n
个元素,元素从0
到n-1
的“震荡”的队列,“震荡”的定义见测试说明。
import collections
def Func():
d = collections.deque()
n = int(input())
# ********** Begin ********** #
for i in range(n):
if i % 2 == 0:
d.extend([i])
else:
d.extendleft([i])
# ********** End ********** #
print(d)
根据提示,在右侧编辑器Begin-End
区间补充代码,实现函数功能:读取n(n>0)
行输入,以每一行的数据为key
,行号(从0
开始)为value
,建立n
对键值对,然后将他们按照key
排序后,放入一个有序字典,最后输出这个有序字典。
import collections
def Func():
pairs = []
n = int(input())
for s in range(n):
k = input()
# ********** Begin ********** #
pairs.append((k,s))
od = collections.OrderedDict(sorted(pairs,key=lambda s:s[0]))
# ********** End ********** #
print(od)
根据右边编辑器中各个函数中的提示,将函数Begin-End
区间代码补充完整,使得程序能够正常运行并输出正确的结果。 右侧编辑器的4
个函数会被依次调用,并产生4
个默认字典,并会以类似如下的方式,获取并输出默认值:
dd = GetIntDefaultDict()
print("int默认字典的默认值:",dd['a'])
正确的补充代码后应该得到的结果: int默认字典的默认值: 0
list默认字典的默认值: []
tuple默认字典的默认值: ()
str默认字典的默认值:
import collections
def GetIntDefaultDict():
#返回一个空的int类型的默认字典
# ********** Begin ********** #
return collections.defaultdict(int)
# ********** End ********** #
def GetListDefaultDict():
#返回一个空的list类型的默认字典
# ********** Begin ********** #
return collections.defaultdict(list)
# ********** End ********** #
def GetTupleDefaultDict():
#返回一个空的tuple类型的默认字典
# ********** Begin ********** #
return collections.defaultdict(tuple)
# ********** End ********** #
def GetStrDefaultDict():
#返回一个空的str类型的默认字典
# ********** Begin ********** #
return collections.defaultdict(str)
# ********** End ********** #
在右侧编辑器Begin-End
区间补充代码,完成类FibIterator
中的__next__()
函数的功能。
class FibIterator:
count = 0
now = 1 #初始值分别设置为1和0,方便__next__函数处理
last = 0 #
def __init__(self,count):
self.count = count
def __iter__(self):
return self
def __next__(self):
#********** Begin *********#
if self.count <= 0:
raise StopIteration
self.count -= 1
value = self.now
self.now, self.last = self.now + self.last, self.now
return value
#********** End **********#
def GetFib(count):
return FibIterator(count)
根据提示,在右侧编辑器Begin-End
区间补充代码,实现myrange
的功能。myrange
函数接受三个参数start
,stop
,step
,就如同 Python 内置的函数range
一样,start
代表起始值,stop
代表结束值(不包括),step
代表步长。返回值是一个包含这一范围内的元素的迭代器。
def myrange(start,stop,step):
#补充这个生成器函数的代码,实现要求的功能
#********** Begin *********#
current = start
if step >= 0:
while current < stop:
yield current
current += step
elif step < 0:
while current > stop:
yield current
current += step
#********** End **********#