Python学习之阶段练习(一)

第一题:

    1. 题目描述

       数据表记录包含表索引和数值,请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,
输出按照key值升序进行输出。
        - 输入描述:先输入键值对的个数,然后输入成对的index和value值,以空格隔开
        - 输出描述:输出合并后的键值对(多行)
        - 示例1
        输入
        4
        0 1
        0 2
        1 2
        3 4
        输出
        0 3

        1 2

        3 4 

    代码:

    def integration(list_num): #将列表中的每个元素的索引为0的元素作为字典的key值,而索引为1的元素作为字典的value值
        dict_num = dict()
        for list_tmp in list_num:
            if list_tmp[0] in dict_num:
                dict_num[list_tmp[0]]=int(dict_num[list_tmp[0]]) + int(list_tmp[1])
            else:
                dict_num[list_tmp[0]] = int(list_tmp[1])
        for key,values in dict_num.items():
            print(int(key),values)

    count = int(input('count:'))
    list_num = [(input().split())for num in range(count)]   ##将所有输入的数据以嵌套列表的方式存储
    integration(list_num)

        输入:

    4
    0 1
    0 2
    1 2
    3 4

        输出:

    0 3
    1 2
    3 4

第二题:

       将一个英文语句以单词为单位逆序排放。例如“I am a boy”,逆序排放后为“boy a am I”所有单词之间 用一个空格隔开,语句中除了英文字母外,不再包含其他字符

       - 输入描述:将一个英文语句以单词为单位逆序排放。
       - 输出描述:得到逆序的句子
示例1:
    - 输入
    I am a boy
    - 输出
    boy a am I
str1 = input("input:")
list_tmp = str1.split()
str_tmp = list_tmp[::-1]
print(' '.join(str_tmp))

第三题:

        用 filer()进行函数式编程,写一段代码来给出一个年份的列表并返回一个只有闰年的列表。列表解析式实现方式呢?

        

代码:

        函数式编程:

    def Judge_Leap_Year(*args):
        for Year_num in args:
            if (Year_num % 4 == 0 and Year_num % 100 != 0) or Year_num % 400 == 0:
                return True
            else:
                return False
    list_year = [1946,1821,1960,2082,2004,2003,1725,1840]
    print(list(filter(Judge_Leap_Year,list_year)))

        列表解析式:

    list_year = [1946,1821,1960,2082,2004,2003,1725,1840]                                           
    print([year for year in list_year if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0 ])  

第四题:

           列表和字典复习.给出一个整数值,返回代表该值的英文,比如输入 89 返回"eight-nine"。附加题:
    能够返回符合英文语法规则的形式,比如输入“89”返回“eighty-nine”。本练习中的值限定在家 0
    到 1,000

       代码:
    English_num = ['zero','one','two','three','four','five','six','seven','eight','nine','ten']   
    dict_tmp = {str(num):English_num[num] for num in range(0,11)}   
    num = input()
    if 0 <= int(num) <=1000:
        str_num =str()
        for char in num :
            str_num = str_num + dict_tmp[char]+'-'
        print(str_num[:-1])

第五题:

       a)给出两个可识别格式的日期,比如 MM/DD/YY 或者 DD/MM/YY 格式,计算出两个日期间的天数.
b)给出一个人的生日,计算从此人出生到现在的天数,包括所有的闰月.

c)还是上面的例子,计算出到此人下次过生日还有多少天.

    a代码:

    import datetime

    def Get_time(date:str):
        date_tmp =list()
        date_tmp = date.split('/')
        return int(date_tmp[2]),int(date_tmp[1]),int(date_tmp[0])

    def Date_Diff(args1,args2):
         print((abs(datetime.date(*args1)-datetime.date(*args2)).days))
    
    time1 =input('date1 DD/MM/YY:')
    time2 = input('date2:DD/MM/YY:')
    Date_Diff(Get_time(time1),Get_time(time2))

   b代码:   

    import datetime
    from datetime import date
    brithday = input('DD/MM/YY:')
    print((date.today()-datetime.date(*Get_time(brithday))).days)

   c代码:

    import datetime
    from datetime import date
    def Obtain_next_birthday():
        next_birthday = list()
        today = str(date.today()).split('-')
        birthday = Get_time(input('DD/MM/YY:'))
        next_birthday.append(int(today[0])+1)
        next_birthday.extend(birthday[1:])
        return next_birthday
    next_birthday = Obtain_next_birthday()
    print((datetime.date(*next_birthday)- date.today()).days)


猜你喜欢

转载自blog.csdn.net/m0_37717595/article/details/80311865
今日推荐