Python-五道练习题(huaxiawudi0727)

23 篇文章 0 订阅
'''
第一题:去除列表中的重复元素
1.列表中的元素有重复,需要去掉重复元素
2.要求保留原来的元素顺序
3.不需要返回值,直接修改原列表即可
'''

def duplicate_removal(lt):
    l = []
    for i in lt:
        if i not in l:
            l.append(i)
    lt.clear()
    lt.extend(l)
    # for i in l:
       # lt.append(i)
    print(lt)
lt = [1,2,3,4,8,5,5,6,2,1,2]
duplicate_removal(lt)
'''
第二题:计算字符串中所有数字的和
1.字符串中只有小写字母和数字
2.数字可能连续,也可能不连续
3.连续数字要当作一个数处理
如:12abc34de5f => 12 + 34 + 5 => 51
'''

s = '12abc34de5f'
def sum_of_num(s):
    sum = 0
    ret = ''
    for i in range(len(s)):
        if s[i].isdecimal() == True:
            ret += s[i]
    else:
        ret += ''
    l = ret.split('')
    for i in l:
        if i.isdecimal() == True:
            sum += int(i)
        return sum
    print(sum_of_num(s))
'''
第三题:返回列表中的第二小的元素的下表
1.参数是一个列表,元素全部是整数
2.返回第二小的元素的下标
'''

def seconde_min(lt):
    l = []
    for i in lt:
        l.append(i)
    l.sort()
    for i in range(len(lt)):
        if i == l[1]:
            return i
'''
第四题:写出冒泡排序函数,可以排序任意类型的元素,可以逆序
1.实现冒泡排序算法
2.可以排序任意类型的元素
3.能够通过参数设置进行逆序,默认升序
'''

def list_sort(lt,key = None,reverse = False):
    n = len(lt)
    if not reverse:

        if key:
            for j in range(n - 1):
                if key(lt[i]) > key(lt[i + 1]):
                    lt[i],lt[i + 1] = lt[i + 1],lt[i]
    else:
        if key:
            for j in range(n - 1):
                for i in range(n - j - 1):
                     if key(lt[i]) < key(lt[i + 1]):
                         lt[i],lt[i + 1] = lt[i + 1],lt[i]
        return lt

'''
第五题:自己实现一个字符串的find函数
1.在一个字符串中查找另一个字符串
2.找到了返回第一次出现的位置
3.没找到返回-1
4.参数s1为源字符串,参数s2为要查找的字符串
解题思路:切割代码s2,若能切割,则存在s1,其中第一段字符长度为s2所在位置
'''

#def index_of_str(s1,s2):
#    if len(s2) != 0:
#        if s2 in s1:
#            return s1.index(s2)
#        else:
#            return -1
#    else:
#        return -1

def index_of_str(s1,s2):
    if len(s2) != 0:
        l = s1.split(s2)
        if True:
            return len(l[0])
        else:
            return -1
    else:
        return -1
s1 = 'abcdss12av123'
s2 = 'dss'
print(index_of_str(s1,s2))

随笔:不要拿自己的无知当个性!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值