牛客刷题总结——Python入门08:面向对象、正则表达式
创始人
2024-01-26 16:25:09
0

在这里插入图片描述

🤵‍♂️ 个人主页: @北极的三哈 个人主页

👨‍💻 作者简介: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 2if n==2:return 3else:return f(n-1)+f(n-2)
n=int(input())
print(f(n))

NP96 球的表面积

在线编程跳转链接

import math as mtdef 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 = nameself.stu_num = stu_numself.score = scoreself.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=nameself.salary=salaryself.age=agedef 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 = nameself.salary = salarydef 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 = xself.y = ydef __str__(self):print((self.x, self.y))def __add__(self):self.x = x1 + x2self.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 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())

推 荐:牛客题霸-经典高频面试题库

🌐 找工作神器-|笔试题库|面试经验|大厂面试题 👉 点击链接进行注册学习
在这里插入图片描述

相关内容

热门资讯

招商帮:寓匠全屋整装,优秀品牌... 智能家装正在逐渐替代传统装修方式,在市场中有着超高人气,全屋整装开启家装新时代,投资开店轻松获利。寓...
跟着政策走 跟着趋势走 永远不... 经过近一个月的调整,近期在政策利好频出背景下,最近几个交易日两市大盘开始有所走强。股语有云“五穷六绝...
“中国科大mba创新创业大赛”... 【MBA中国网讯】题记“大众创业,万众创新”,是国家级的重大战略。MBA创新创业大赛不仅响应了国家号...
当政府、财团、初创公司集体发力... 首尔主要创业孵化器大企业助力我们要谈韩国的创业,以三星、LG为代表的商业巨头一定是不可避免的话题。众...
2018最具前景创业项目 适合... 和中国年轻一代喜欢创业、富于冒险精神不同的是,韩国同龄人却对创业有着更多的担心,他们更追求稳定的工作...
传统行业和新兴产业 传统行业和... 工信部:新兴产业培育发展和传统产业改造升级要并重中国新闻网2月17日电工业和信息化部部长苗圩17日针...
【传媒*张良卫】产业互联网大幕... 传媒互联网传媒行业策略报告:产业互联网大幕拉起传统与新兴产业的动能接续投资要点产业互联网是消费互联网...
新兴产业基金重仓传统产业 新兴... 华安科创主题混合基金,顾名思义,应该重仓科技创新类的股票;恒生前海沪港深新兴产业基金,按理应该投资新...
《上海促进在线新经济发展行动方... 工业互联网、远程办公、生鲜电商、在线教育、在线医疗等在线经济领域的新兴行业在2020年新冠肺炎疫情爆...
新兴互联网服务业为何增势良好?... 据中央广播电视总台经济之声《天下财经》报道,据国家统计局最新数据显示,一季度,国内第三产业增加值同比...