头歌Python学习-Python基础-语法、数据类型

由于题目不难且数量较多,这里就不放每一关的相关知识了,一共24道题。

1.编程要求

本关任务是在hello_python.py中填写相应的打印语句,实现打印输出Hello Python的功能。**(请仔细阅读下面的编程要求,注意区分大小写)**具体要求如下:

1.交互环境下的编程(在“命令行”窗口完成),步骤如下:

  • 打开右侧"命令行"窗口,自动连接后台容器;进入容器终端,键入python,回车后系统自动输出 Python 命令提示符>>>,进入交互编程环境;

  • 在交互式编程环境中,使用 Python 打印函数print及相应参数,打印输出Hello Python

  • 在交互式编程环境中,完成几项四则运算任务,包括10+410-410*410/4

2.代码文件方式编程(在“代码”窗口完成),步骤如下:

  • 打开左侧"代码"窗口,在hello_python代码文件中Begin-End区间补充代码,使用 Python 打印函数print及相应参数,实现打印输出Hello Python的功能。

hello_python.py的代码框架如下:

#coding=utf-8

#请在此处添加代码完成输出“Hello Python”,注意要区分大小写!

###### Begin ######

print('Hello Python')

###### End ######

2.编程要求

根据提示,在右侧编辑器Begin-End区间补充代码,观察测试输入输出的特点,通过format()方法,按要求输出指定语句。

#coding=utf-8

#请在此处补充代码,按要求完成输出
###### Begin ######
name=input("请输入一个人的名字:")
country = input('请输入一个国家的名字:')
print("世界那么大,{0}想去{1}看看。".format(name,country))

###### End ######
3.编程要求

根据提示,在右侧编辑器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 ######
4.编程要求

根据提示,改正右侧编辑器中代码的缩进错误,使其能够正确运行,并输出结果。

#有错误的函数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()
5.编程要求

根据提示,改正右侧编辑器的代码,并输出 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")

6.编程要求

根据提示,对右侧编辑器中,部分代码添加注释或者取消注释,使其输出结果与测试说明中的结果一致。

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)

 

7.编程要求

根据提示,在右侧编辑器 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 ********** #

 

8.编程要求

本关的编程任务是补全文件的代码内容,输入一个整数,把这个整数换算为月份数和天数,每月以30天计算。 注意:在输出时用format函数将数字转换成字符串输出。

本关涉及的代码文件 的代码框架如下:

# coding = utf-8
data=int(input())
# 请在下面添加代码
###### Begin ######
print('Months=%d Days=%d'%(data//30,data%30))
####### End #######
9.编程要求

本关的编程任务是补全文件的代码内容,输入一个任意位数大于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 #######
10.编程要求

本关的编程任务是补全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 ##########
11.编程要求

本关的编程任务是补全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 ##########

12.编程要求

编程任务是补全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 ##########

13.编程要求

本关的编程任务是补全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 ##########
14.编程要求

本关的编程任务是补全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 #######
15.编程要求

本关的编程任务是补全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 ##########
16.编程要求

本关的编程任务是补全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 ##########
17.编程要求

本关的编程任务是补全src/Step4/menu_nest.py文件的代码,实现相应的功能。具体要求如下:

  • menu_total列表中初始时只包含menu1字典,menu1字典中包含两道菜和两道菜的价格;

  • 编程要求是向menu_total列表中添加另外一个菜单字典menu2menu2菜单中的菜名和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)
18.编程要求

根据右边编辑器中各个函数中的提示,将函数Begin-End区间代码补充完整,使得程序能够正常运行并输出正确的结果。编辑区的3个函数,将按照如下顺序被调用:

 
  
  1. p = CreatePoint()
  2. PrintPoint(p)
  3. p = IncX(p)
  4. PrintPoint(p)
  5. p = IncY(p)
  6. 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)

 

19.编程要求

根据提示,在右侧编辑器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())

计数器中的所有元素。

20.编程要求

根据提示,补充右侧编辑器Begin-End区间代码,完成函数功能,函数读取输入的一个数字n(n≥0),然后输出一个有n个元素,元素从0n-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)

 

21.编程要求

根据提示,在右侧编辑器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)
22.编程要求

根据右边编辑器中各个函数中的提示,将函数Begin-End区间代码补充完整,使得程序能够正常运行并输出正确的结果。 右侧编辑器的4个函数会被依次调用,并产生4个默认字典,并会以类似如下的方式,获取并输出默认值:

  1. dd = GetIntDefaultDict()
  2. 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 ********** #

 

23.程要求

在右侧编辑器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)

 

24.编程要求

根据提示,在右侧编辑器Begin-End区间补充代码,实现myrange的功能。myrange函数接受三个参数startstopstep,就如同 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 **********#

 

你可能感兴趣的:(python,学习,开发语言)