Python基础小练习

巩固Python基础小练习

1、l=[1,1,6,3,1,5,2]去重,至少两种方法

l = [1,1,6,3,1,5,2]

#方法1:
print(set(l))
#方法2:
new_l = []
for i in l:
    if i not in new_l:
        new_l.append(i)
print(new_l)

2、实现字符串反转 输入str=”string”输出’gnirts’三种方法

str = 'string'
#方法1:
print(str[::-1])
#方法2:
order = []
for i in str:
  order.append(i)
order.reverse()   #将列表反转
print(''.join(order))
#方法3:

3、一行代码实现对列表a中的偶数位置的元素进行加3后求和

a = [1,2,3,4,5,6,7,8]
b =[]
for j in a[1::2]:
  b.append(j)
print(sum(b)+3*len(b))

4、List = [-2, 1, 3, -6],如何实现以绝对值大小从小到大将 List 中内容排

list1 = [-2,1,3,-6]
print(sorted(list1,key=abs))

5、list 对象 alist [{‘name’:’a’,’age’:20},{‘name’:’b’,’age’:30},{‘name’:’c’,’age’:25}], 请按 alist 中元素的age 由大到小排序;

list1 = alist.sort(key=lambda x:x['age'], reverse=True)
print(list1)

6、将字符串:”k:1|k1:2|k2:3|k3:4”,处理成 python 字典:{‘k’:’1’, ‘k1’:’2’, ‘k2’:’3’,’k3’:’4’ }

import re
a = "k:1|k1:2|k2:3|k3:4"
key_list = []
value_list = []

ret = re.split(r"\||:",a)
for i in ret[1::2]:
    value_list.append(i)
for j in ret[::2]:
    key_list.append(j)
a_dict = dict(zip(key_list,value_list))
print(a_dict)

7、定义一个列表的操作类:Listinfo 包括的方法:

列表元素添加: add_key(keyname) [keyname:字符串或者整数类型]
列表元素取值:get_key(num) [num:整数类型]
列表合并:update_list(list) [list:列表类型]
删除并且返回最后一个元素:del_key()
class ListInfo:
    def __init__(self):
        self.list1 = []


    def add_key(self,keyname):
       self.list1.append(keyname)
        # print(new_list1)


    def get_key(self,num):
        return self.list1[num]


    def update_list(self,list):
        self.list1.extend(list)


    def __iter__(self):
        '''表示对象可迭代'''
        myiter = MyIter(self.list1)
        return myiter

class MyIter(object):
    '''实现迭代器'''

    def __init__(self,mylist):
        self.mylist = mylist
        self.current_index = 0




    def __next__(self):
        if self.current_index < len(self.mylist):

            self.current_index += 1
            return self.mylist[self.current_index-1]
        else:
            raise StopIteration


    def __iter__(self):
        return self

mylist = ListInfo()
for i in range(10):
    # print(i)
    mylist.add_key(i)
for i in mylist:
    print(i)

8、下面的例子实现了学校成员类,这个类登记成员的姓名,并且统计学校的总人数。老师类继承学校成员类,创建对象的时候总人数加一,老师类登记老师的工资。学生类继承学校成员类,总人数也会加一,学生类登记学生的成绩。对象消亡的时候,总人数会减一。

class SchoolMember:
    # 总人数,这个是类的变量
    sum_member = 0

    # __init__方法在类的对象被创建时执行
    def __init__(self, name):
        self.name = name
        SchoolMember.sum_member += 1
        print("学校新加入一个成员:%s" % self.name)
        print("现在有成员%d人" % SchoolMember.sum_member)

    # 添加新同学
    def say_hello(self):
        print("我叫:%s" % self.name)

    # __del__方法在对象不使用的时候运行
    def __del__(self):
        SchoolMember.sum_member -= 1
        print("%s离开了,学校还有%d人" % (self.name, SchoolMember.sum_member))


# 老师类继承学校成员类
class Teacher(SchoolMember):
    def __init__(self, name, salary):
        SchoolMember.__init__(self, name)
        self.salary = salary
#添加老师
    def say_hello(self):
        SchoolMember.say_hello(self)
        print("我的工资是:%d" % self.salary)

    def __del__(self):
        SchoolMember.__del__(self)


# 学生类
class Student(SchoolMember):
    def __init__(self, name, mark):
        SchoolMember.__init__(self, name)
        self.mark = mark

    def say_hello(self):
        SchoolMember.say_hello(self)
        print("成绩:%d" % self.mark)

    def __del__(self):
        SchoolMember.__del__(self)


t = Teacher("张三", 4500)
t.say_hello()
s = Student("李四", 95)
s.say_hello()

9、写单例,至少两种形式

#方法1:
class Singleton(object):

    def __new__(cls, *args, **kwargs):
        if not hasattr(cls, '_instance'):
            orig = super(Singleton, cls)
            cls._instance = orig.__new__(cls, *args, **kwargs)
        return cls._instance


class MyClass(Singleton):
    a = 1


one = MyClass()
two = MyClass()

# one和two完全相同,可以用id(), ==, is检测
print(id(one))  # 29097904
print(id(two))  # 29097904
print(one == two)  # True
print(one is two)  # True
#方法2:
def singleton(cls, *args, **kwargs):
    instances = {}

    def _singleton():
        if cls not in instances:
            instances[cls] = cls(*args, **kwargs)
        return instances[cls]

    return _singleton


@singleton
class MyClass3(object):
    a = 1


one = MyClass3()
two = MyClass3()

print(id(one))  # 29097904
print(id(two))  # 29097904
print(one == two)  # True
print(one is two)  # True

10、字符串逆序输出,包括标点符号

import re

a = input('字符串:')
ret = re.split(r" ",a)
for i in range(len(ret)):
    if not ret[i].isalpha():
        ret[i] = ret[i][-1] + ret[i][:-1]
new_str  = ' '.join(ret)
b = new_str.split()
b.reverse()
c = ' '.join(b)
print(c)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值