Day15作业及默写

时间:2023-01-29 00:14:58

1.整理今天内容

PASS

2.现有列表alist = [3,1,-4,2,-6] 按照元素的绝对值大小进行排序

alist = [3,1,-4,2,-6]
sorted(alist,key=lambda x:abs(x))

3.已知ip='192.168.156.254'提取各部分并写入列表中

ip='192.168.156.254'
alist=ip.split('.')

4.在以上题基础上实现写一个函数,完成功能,然后将列表返回

ip='192.168.156.254'
def ip2list(ip):
    return ip.split('.')
print(ip2list(ip))

5.输入某年某月某日,判断是这一年中的第几天?(用内置模块实现)

import time
day = input('输入某年某月某日:').strip()
ti = time.mktime(time.strptime(day,'%Y%m%d'))
print(f'这是一年中的第{time.localtime(ti)[-2]}天')

6.一行代码实现[1,4,9,16,25,36,49,64,81,100]

[ x**2 for x in range(1,11) ]

7.从0-99这个100个数中随机取出10个不重复的数

import random
random.sample(range(100),k=10)

8.一行代码,通过filter和lambda函数输出以下列表索引为奇数对应的元素

lis = [12,13,14,151,5,16,17,117,133,144,177]
list(filter(lambda x:lis.index(x)%2!=0,lis))

9.将下列数据转成想要的结果,尽量用简洁的方式实现:

原数据lst =[[1,2,3],[4,5,6],[7,8,9]]

lis = list() [ lis.extend(i) for i in lst] print(lis) =================================== 转换后 li = [1,2,3,4,5,6,7,8,9]

10.实现一个装饰器,通过调用一次装饰器使被装饰的函数调用5次

def Wrapper(func_name):
    def Inner(*args,**kwargs):
        for i in range(5):
            ret = func_name(*args,**kwargs)
    return Inner
@Wrapper
def func(*args,**kwargs):
    print(args)

11.将列表内的元素,根据位数被合并成字典(升级题)

lst =[1,2,3,4,12,13,14,123,124,125,1234,1235,1236,1237,12345,12346,12347]
#变成
dic = {
1:[1,2,3,4],
2:[12,13,14],
3:[123,124,125],
4:[1234,1235,1236,1237],
5:[12345,12346,12347]}
from collections import defaultdict
dic = defaultdict(list)
for i in lst:
        dic[len(str(i))].append(str(i))
print(dict(dic))

12.输入一个不是空的字符串,判断这个字符串是不是由一个子字符重复多次组成,字符只包含小写字母,且长度不超过1000

(升级题) 

示例一:

        输入:"abab"

        这种就输出True,因为输入的是ab重复组成的字符串

示例二:

        输入:"abcabcabc"

        这种就输出True,因为输入的是abc重复组成的字符串

示例三:

        输入:"abcdabcd"

        这种就输出True,因为输入的是abcd重复组成的字符串

示例四:

        输入:'abc"

        这种就输出False,因为输入的没有重复组成字符串
s = input('输入你的字符串>>>').strip()
first_sort = s.find(s[0],1)
sub_string = s[0:first_sort]
sub_len = len(sub_string) #4

def SubCheck(Str,sub_len,n,):
    if n == len(Str):
        print(f'子串为{sub_string},循环{sub_len}次')
        print('True')
        return 'True'
    elif Str[:sub_len] != Str[n:n+sub_len]:
        print('False')
        return False
    #print(n,sub_len)
    return SubCheck(Str,sub_len,n + sub_len)

SubCheck(s,sub_len,0)