牛客刷题总结——Python入门08:面向对象、正则表达式
🤵♂️ 个人主页: @北极的三哈 个人主页
👨💻 作者简介:
Python
领域优质创作者。📒 系列专栏:《牛客题库-Python篇》
🌐推荐《牛客网》——
找工作神器
|笔试题库
|面试经验
|实习经验内推
,求职就业一站解决
👉 点击链接进行注册学习
文章目录
-
- 011 面向对象 NP94 - NP100
-
- 1.面向对象三大特征
- 2.特殊方法
- 3.深拷贝与浅拷贝
- NP94 函数求差
- NP95 兔子的数量
- NP96 球的表面积
- NP97 班级管理
- NP98 修改属性1
- NP99 修改属性2
- NP100 重载运算
- 012 正则表达式 NP101 - NP103
-
- NP101 正则查找网址
- NP102 提取数字电话
- NP103 截断电话号码
- **`推 荐:牛客题霸-经典高频面试题库`**
011 面向对象 NP94 - NP100
Python面向对象学习链接
1.面向对象三大特征
封装
:将数据(属性)和行为(方法)包装到类对象中。在方法内部对属性进行操作,在类对象的外部调用方法。这样,无需关心方法内部的具体实现细节,从而隔离了复杂度。
继承
:子类可以继承父类的属性和方法,提高代码的复用性。
多态
:多态就是具有多种形态,即便不知道一个变量所引用的对象是什么类型,仍然可以使用这个变量调用方法。
2.特殊方法
特殊方法 | 描述 |
---|---|
__len__() |
通过重写 __len__() 方法,让内置函数len() 的参数可以是自定义类型 |
__add__() |
通过重写__add__() 方法,可以让自定义对象具有+ 的功能 |
__new__() |
用于创建对象 |
__init__() |
对创建的对象进行初始化 |
3.深拷贝与浅拷贝
浅拷贝
Python
拷贝一般都是浅拷贝
,拷贝时,对象包含的子对象内容不拷贝,因此,源对象与拷贝对象会引用同一个子对象。
深拷贝
使用
copy
模块的deepcopy
函数,递归拷贝对象中包含的子对象,源对象和拷贝对象所有的子对象也不相同。
NP94 函数求差
def cal(a, b): return a - bx = int(input())y = int(input())print(cal(x, y))print(cal(y, x))
NP95 兔子的数量
在线编程跳转链接
def f(n): if n==1: return 2 if n==2: return 3 else: return f(n-1)+f(n-2)n=int(input())print(f(n))
NP96 球的表面积
在线编程跳转链接
import math as mt def vol(n): return 4*mt.pi*(n**2) list1=[1, 2, 4, 9, 10, 13]for n in list1: print(round(vol(n),2))
NP97 班级管理
在线编程跳转链接
class Student: def __init__(self, name, stu_num, score, grade): self.name = name self.stu_num = stu_num self.score = score self.grade = grade #__str__方法用于返回对象的描述信息,如果不使用__str__方法,直接print,或者return,返回的是对象的内存地址。 def __str__(self): return ("%s's student number is %s, and his grade is %d. He submitted %s assignments, each with a grade of %s" % (self.name, self.stu_num, int(self.score), len(self.grade.split()), self.grade)) name1 = input()stu_num1 = input()score1 = input()grade1 = input()stu = Student(name1, stu_num1, score1, grade1)print(stu)
NP98 修改属性1
在线编程跳转链接
class employee: def __init__(self,name,salary,age=-1): self.name=name self.salary=salary self.age=age def printclass(self): if self.age==-1: print("Error! No age") else: print("{}'salary is {}, and his age is {}".format(self.name,self.salary,self.age))a=input()b=int(input())c=int(input())e=employee(a,b)e.printclass()e.age=c e.printclass()
NP99 修改属性2
在线编程跳转链接
class Employee(): def __init__(self, name, salary) -> None: self.name = name self.salary = salary def printclass(self): print(f"{self.name}'salary is {self.salary}, and his age is {self.age}") name = input()salary = int(input())age = int(input()) e = Employee(name, salary)if hasattr(e,'age'): e.printclass()else: print(False) setattr(e,"age",age) e.printclass()
NP100 重载运算
在线编程跳转链接
class Coordinate(): def __init__(self, x, y): self.x = x self.y = y def __str__(self): print((self.x, self.y)) def __add__(self): self.x = x1 + x2 self.y = y1 + y2x1, y1 = map(int, input().split()) # 1.输入第一行两个数字x2, y2 = map(int, input().split()) # 1.输入第二行两个数字 c1 = Coordinate(x1, y1) # 2. 调用类c1.__add__() # 3. 调用__add__()函数,实现两组数据分别对应相加c1.__str__() # 4. 调用__str__()函数,打印(相加之后的x, 相加之后的y)
012 正则表达式 NP101 - NP103
示例:
1、验证账号是否合法(字母开头,允许5-16
字节,允许字母数字下划线)。
2、验证密码是否合法(以字母开头,长度在6~18
之间,只能包含字母、数字和下划线)
3、匹配是否全是汉字。
4、验证日期格式(2020-09-10)
5、验证身份证号码。
"""1、验证账号是否合法(字母开头,允许5-16字节,允许字母数字下划线)。2、验证密码是否合法(以字母开头,长度在6~18之间,只能包含字母、数字和下划线)3、匹配是否全是汉字:4、验证日期格式(2020-09-10)5、验证身份证号码。"""import re# 1.验证账号是否合法(字母开头,允许5-16字节,允许字母数字下划线)。print(re.match(r'^[a-zA-z]\w{4,15}$', 'a3443wre5678rfgh').group())# 2、验证密码是否合法(以字母开头,长度在6~18之间,只能包含字母、数字和下划线)print(re.match(r'^[a-zA-Z]\w{5,17}$', 'd697g798bv9d44444e').group())# 3.匹配是否全是汉字:print(re.match('^[\u4e00-\u9fa5]{0,}$', '哈哈').group())# 4.验证日期格式(2020-09-10)# print(re.match(r'^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]))-(([0-2]([1-9]{1}))|(3[0|1]))$', '2020-09-10').group())# 5.验证身份证号码。print(re.match(r'^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$|^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$', '533326200006013333').group())
NP101 正则查找网址
在线编程跳转链接
import rehttp = input()result = re.match('https://www',http,re.I)print(result.span())
NP102 提取数字电话
在线编程跳转链接
import re#导入模块 p=r'[-A-Za-z]+'#第一个‘-’表示字符‘-’,A-Za-z表示匹配大小字母#‘+’号表示连续匹配 text=input()#输入测试字符串 print(re.sub(p,'',text))#利用sub()函数过滤再输出
NP103 截断电话号码
在线编程跳转链接
import res = input()r = re.match('[0-9-]+',s)print(r.group())
推 荐:牛客题霸-经典高频面试题库
🌐
找工作神器-|笔试题库|面试经验|大厂面试题
👉 点击链接进行注册学习