🤵♂️ 个人主页: @北极的三哈 个人主页
👨💻 作者简介: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 - b
x = 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 + y2
x1, 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 re
http = 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 re
s = input()
r = re.match('[0-9-]+',s)
print(r.group())
推 荐:牛客题霸-经典高频面试题库
🌐
找工作神器-|笔试题库|面试经验|大厂面试题
👉 点击链接进行注册学习