Python - 函数练习

1.写函数,计算传入字符串中【数字】、【字母】、【空格] 以及 【其他】的个数

def zifu(zfc):
    #先定义他们的个数都为0
    num_num = 0
    letter_num = 0
    space_num = 0
    other_num = 0

    #判断类型,累计加1
    for i in zfc:
        if i.isalpha():
            letter_num += 1
        elif i.isdigit():
            num_num += 1
        elif i.isspace():
            space_num += 1
        else:
            other_num += 1
    return (num_num,letter_num,space_num,other_num) 

ret = zifu(input('input your str:'))
print(ret)

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

temp = [11,33,455,'das','4321','df']
# temp = 123
def panduan(s):

    #用isinstance方法判断传入的数值是不是 字符串、列表、元组类型,是的话计算他的长度
    if isinstance(temp,str) or isinstance(temp,list) or isinstance(temp,tuple):
        return True if len(s) > 5 else False

    return None

ret = panduan(temp)       #获取函数执行后的返回值
if ret == True:
    print('您传入的对象长度大于5')
elif ret == None:
    print('您传入的对象不是字符串、列表或元组')
else:
    print('您传入的对象长度不足5')

3.写函数,检查用户传入的对象字符串的每一个元素是否含有空内容。

s = 'ddd sajio ido'

def has_space(args):
    ret = True
    for i in args:       #循环传入参数的每一个元素,判断是否有空格
        #if ' ' in i:    
        if i.isspace(): 
            ret = False  #如果有空格返回False,并退出循环
            break
    return ret

result = has_space(s)
print(result)

4.写函数,检查传入列表的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。

def lis(args):
    if len(args) > 2:
        return args[0:2]   #如果此处执行下面的return args 不会执行,因为在函数中如果return执行,那么return以后的都不执行
    return args

li = ['alex',19,'durand','kevin','jin']
ret = lis(li)
print(ret)

#上述题目另一种做法
def lis(args):
    if len(args) > 2:
        del args[2:]

li = ['alex',19,'durand','kevin','jin']
lis(li)
print(li)
#函数传参的时候,传的是引用
def func(args):
    args.append(123)  #这里的追加还是在li列表的上追加
    
li = [11,22]
func(li)
print(li)


def func(args):
    args=123    #这里是给arg重新赋值,在内存中arg和li不是指向同一个值,而是重新创建了一个值
    
li = [11,22]
func(li)
print(li)

5.写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者。

li = [11, 22, 33, 44]
new_li = []

def odd(args):
    num = len(args)
    for i in range(0,num):   #循环次数为列表的长度
        if i % 2 != 0:       #判断是否为奇数位
            # print(i)
            new_li.append(args[i])  #把去到的奇数位索引对应的元素追加到新列表中
    return new_li

ret = odd(li)
print(ret)

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

PS: 字典中的value只能是字符串或列表
#将取值赋值给一个新的字典,会在内存中又重新创建一份:
dic = {"k1": "v1v1", "k2": [11, 22, 33, 44],'k3':'12'}

def jc(arg):
    ret = {}
    for key,value in arg .items():
        if len(value) > 2:
            ret[key] = value[0:2]   #value长度大于2的,用切片取value前两位
        else:
            ret[key] = value   #长度不大于2的,值不变
    return ret

result = jc(dic)
print(result)

#修改原来字典数据:
dic = {"k1": "v1v1", "k2": [11, 22, 33, 44],'k3':'12'}
def jc(arg):
    ret = {}
    for key,value in arg .items():
        if len(value) > 2:
            arg[key] = value[0:2]   #value长度大于2的,用切片取value前两位
        else:
            arg[key] = value   #长度不大于2的,值不变
    return ret

jc(dic)
print(dic)

评论

此博客中的热门博文

三星xpress M2070W 如何连接 WiFi

Skype 常用命令

Python - shutil 模块