头歌python实训通关三

第1关:列表操作

任务描述

本关任务:给定一个列表,对其依次执行下列操作:1.把列表中的元素升序排序。2.删除列表中的最后一个元素。3.把列表中第一个元素移动到列表尾部。4.返回新列表。

相关知识

为了完成本关任务,你需要掌握:1.列表相关操作。

编程要求

根据提示,依次执行上述步骤,返回新列表。

测试说明

平台会对你编写的代码进行测试: 默认列表为:array = [85,96,2,5,3,566,0,91,5234,5555,89,62,34] 测试输入: 预期输出:[2, 3, 5, 34, 62, 85, 89, 91, 96, 566, 5234, 0]

'''
将array依次执行以下操作
1.把列表中的元素升序排序。
2.删除列表中的最后一个元素。
3.把列表中第一个元素移动到列表尾部。
4.返回新列表。
'''
array = [85,96,2,5,3,566,0,91,5234,5555,89,62,34]
#*******请输入您的代码********#
#***********begin************#
array1=sorted(array)
del array1[-1]
array3=array1[0:1:1]
array4=array1[1:12:1]
array4.extend(array3)
print(array4)
#***********end************#

第2关:返回列表中最大和第二大的元素的值

任务描述

本关任务:编写一个能返回传入列表中最大和第二大元素的值的函数。

相关知识

为了完成本关任务,你需要掌握:1.列表操作,2.循环语句,3.if条件语句。

编程要求

根据提示,在右侧编辑器补充代码,返回传入列表的第二大的值和最大值,要求不破坏原有列表。

测试说明

平台会对你编写的代码进行测试:

测试输入:[1,2,3,4,5,6] 预期输出:(5,6)

测试输入:[11,2,30,4,55,6] 预期输出:(30,55)

#x为传入的列表,完成函数编写,使其返回列表中最大值和第二大的值

def max2(x):
    #        请在此处添加代码       #
    # *************begin************#
    m2=max(x)
    a=x.index(m2)
    del x[a]
    m1=max(x)
    # **************end*************#
    return m1,m2  #m1是第二大的值,m2是最大值

第3关:计算指定的年月日是这一年的第几天

任务描述

本关任务:编写能返回年月日是这一年的第几天的函数。

相关知识

为了完成本关任务,你需要掌握:1.简单函数定义及调用,2.列表操作。

编程要求

根据提示,在右侧编辑器补充代码,返回输入年月日是这一年的第几天。

测试说明

平台会对你编写的代码进行测试:

测试输入:1981, 12, 31; 预期输出:365;

测试输入:1980,11,28; 预期输出:333;

def is_leap_year(year):
    """
    判断指定的年份是不是闰年

    :param year: 年份
    :return: 闰年返回True平年返回False
    """
    #        请在此处添加代码       #
    # *************begin************#
    
    if((year%4==0 and year%100!=0) or year%400==0):
        return 1
    else:
        return 0
    # **************end*************#


def which_day(year, month, date):
    """
    计算传入的日期是这一年的第几天

    :param year: 年
    :param month: 月
    :param date: 日
    :return: 第几天
    """
 #        请在此处添加代码       #
    # *************begin************#
    month_day=0
    common_year = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
    leap_year = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
    if (is_leap_year(year)):
        for i in range(month - 1):
            month_day += leap_year[i]
        return(month_day + date)
    else:
        for i in range(month - 1):
            month_day += common_year[i]
        return(month_day + date)
    # **************end*************#

第4关:打印杨辉三角

任务描述

本关任务:编写一个能根据输入行数打印杨辉三角的函数。

相关知识

为了完成本关任务,你需要掌握:1.列表操作,2.循环语句,3.if条件语句。

测试说明

平台会对你编写的代码进行测试:

测试输入:6; 预期输出: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1

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

# 打印杨辉三角
# (不需返回函数值,直接打印)
def printYH(num):
    ''':param num: 杨辉三角行数'''

    #        请在此处添加代码       #
    # *************begin************#
    t = [[1], [1, 1]]
    for i in range(2, num):
        cul = [1]
        pre = t[i - 1]
        for j in range(i - 1):
            cul.append(pre[j] + pre[j + 1])
        cul.append(1)
        t.append(cul)
    for i in t:
        for j in i:
            if j < 10:
                print(str(j), end= '\t')
            else:
                print(str(j), end= '\t')
        print()

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值