python函数作业2

1.写函数,检查获取传入列表对象的所有奇数位索引对应的元素,并将其作为新列表返回

def func(l):
    return l[1::2]
# 切片:列表、元祖、字符串等序列类的对象“隔几个”的取值,就用切片
print(func([1,2,3,4,5]))
#[2,4]

2.写函数,判断用户传入的对象(字符串、列表、元祖)长度是否大于5

def func(x):
    return len(x)>5
print(func('abc'))
#False

3.写函数,检查传入列表的长度,如果大于2,那么仅保留前两个长度的内容并返回

# def func(l):
#     if len(l)>2:
#         return l[:2]
# print(func([1,2,3,4,5]))
# #[1,2]
# print(func([1,2]))
#None
#当l长度小于等于2时结果是None
#切片 当对象长度小于切片长度时,结果是对象本身而不是报错,代码可以简化且没有上面输出None的问题:
def func(l):
    return l[:2]
print(func([1,2,3,4]))
#[1,2]

4.写函数,计算传入字符串中【数字】、【字母】、【空格】以及【其他】的个数,并返回结果

# def func(s):
#     num=0  #计算数字个数
#     alpha=0  #字母
#     space=0  #空格
#     others=0 #其他
#     for i in s:
#         if i.isdigit():
#             num+=1
#         elif i.isalpha():
#             alpha+=1
#         elif i.isspace():
#             space+=1
#         else:others+=1
#     return num,alpha,space,others
# print(func('abc 12322 @ 12as'))

#用户看不懂输出内容的含义,只能看源码才能知道各数字的含义,体验不好,代码改为用字典输出:
def func(s):
    dic = {'num': 0, 'alpha': 0, 'space': 0, 'others': 0}
    for i in s:
        if i.isdigit():
            dic['num'] += 1  #键对应的值
        elif i.isalpha():
            dic['alpha'] += 1
        elif i.isspace():
            dic['space'] += 1
        else:
            dic['others'] += 1
    return dic


print(func('abc 12322 @ 12as'))

5.写函数,检查用户传入的对象(字符串、列表、元祖)的每个元素是否含有空内容,并返回结果

这里的空内容值:‘avsd asdfgh’(字符串中的空格)

[1,2,3,4,'',[],(),'asd fdgg',' ',[''](列表中的元素是空字符串,空列表,空元祖;但元素是字符串时,里面有空格的不算;元素是字符串,里面是空格也不算,最后面两个元素都不算)

元祖同理)

# 非空对象(字符串、列表、元祖)布尔值为True
# # 空对象(字符串、列表、元祖)布尔值为False
def func(x):
    if not x:return True  #输入的内容是空对象时,直接返回True
    elif type(x) is str:
        for i in x:
            if i==' ':
                return True
    elif type(x) is list or type(x) is tuple:
        for i in x:
            if not i:return True
    #i为空对象时为False,not i为True


print(func('1 23'),func(['a',[]]))
#True,True

 6.写函数,检查传入字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回

def func(dic):
    for i in dic:  #当for in循环字典时,i是字典的键
        dic[i] = dic[i][:2]
        # return dic   #注意return不要写到for循环里面,否则就只有第一个元素有变化了
    return dic
print(func({'k1':'abc','k2':[11,22,22,33,44],'k3':"shdhgf",'k4':'a'}))

#结果:{'k1': 'ab', 'k2': [11, 22], 'k3': 'sh', 'k4': 'a'}

7.写函数,接收两个数字,返回大的那个(三元运算)

def func(a,b):
    return  a if a>b else b
print(func(1,5))

# 三元运算结构:
# 变量(接收结果,可以不写) = 为真时的结果  if  判定条件  else  为假时的结果

#输出结果:5

 

posted @ 2018-09-18 23:40  zwz123  阅读(816)  评论(0)    收藏  举报