牛客刷题总结——Python入门08:面向对象、正则表达式

news2024/11/18 22:36: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 - 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())

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/11320.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Design A Youtube

title: Notes of System Design No.05 — Design a Youtube description: ‘Design a Youtube’ date: 2022-05-14 13:45:37 tags: 系统设计 categories: 系统设计 01. Funtional Requirements 02. Non Functional Requirements 03.Assumption 04 API 05 High Level Design 上…

05 MSYS2中安装树莓派32位和64位ARM交叉编译工具

作者将狼才鲸创建日期2022-11-14 Gitee源码和工程地址:才鲸嵌入式 / 开源安防摄像机(嵌入式软件)CSDN文章地址:项目介绍:开源安防摄像机(嵌入式软件) 4.3 MSYS2中安装32位和64位ARM交叉编译工具…

1524_AURIX TC275存储分布_下

全部学习汇总: GreyZhang/g_TC275: happy hacking for TC275! (github.com) 继续前面的学习,这一次把这个小章节的剩余信息看完。 这一部分是外设相关的寄存器地址区间描述,看起来一个模块的地址空间占用基本都是256个字节。具体包括什么暂时…

Unity技术手册-UGUI零基础详细教程-Graphic Raycaster 射线检测和Canvas Group

往期文章分享点击跳转>《导航贴》- Unity手册,系统实战学习点击跳转>《导航贴》- Android手册,重温移动开发 本文约3千字,新手阅读需要6分钟,复习需要2分钟 【收藏随时查阅不再迷路】 👉关于作者 众所周知&#…

outsystems合集系列(三)

outsystemsModeling DataDatabase Entities的介绍如何创建Database Entities如何用excel快速导入真实数据到entity?如何用excel快速创建entity并导入真实数据?Static Entities的介绍Modeling Data 这一节我将介绍在outsystems中建模数据(model data)的一些思路。注意在这里我…

shellcode 中 null byte 的成因和避免方式总结

背景 shellcode 中要避免 null byte(\x00)这个是个通用的概念(windows,linux 都是一样),因为栈溢出的数据作为字符串写入到栈上,\x00 会作为字符串终止符,毁掉整个 shellcode。 这…

HTML+CSS个人静态网页设计

🎉精彩专栏推荐👇🏻👇🏻👇🏻 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业…

【AGC】安全规则resource.data获取不到字段

问题背景 在表结构里有但resource.data获取不到uid字段 解决该问题 request变量是指请求,request.resource.data是请求数据的所有字段和值的映射;resource变量是指所请求的数据在数据库中保存的状态,resource.data是数据库中保存数据的所有…

教师工作量管理系统思路(链表应用)

教师工作量管理系统思路(链表应用) 文章目录教师工作量管理系统思路(链表应用)题目描述:初始信息菜单部分数据结构功能实现查询历史信息从键盘录入信息信息删除和修改工作量计算如何存储到工作量信息链表中&#xff1f…

Bootstrap响应式轮播效果网页(1+X Web前端开发中级 例题)

文章目录 📄题目要求 🧩说明 🧩效果图 💻HTML代码 🎯实现效果 📰完整答案 📄题目要求 阅读下列说明、效果图和HTML代码,进行静态网页开发,填写(1&…

springboot12总结篇(9 10 11)

1.视图解析 以重定向为例 如果返回字符串 则会调用视图解析器thymeleafResolver判断返回值为普通字符串,返回thymeleafView调用其render方法,拼接直接访问 2.异常处理 404 ControllerAdvie 处理异常类 ExceptionHandler ControllerAdvie 处理异常类…

适配器模式

思考适配器模式 适配器模式通过转换已有的接口,达成目标需要的接口 适配器模式还可以将多种差异化接口适配成同一接口做统一输出 1.适配器模式的本质 适配器模式的本质是:转换匹配,复用功能。 适配器通过转换调用已有的实现,从而能把已有的实现匹配成需要…

【Spring】——4、使用@Scope注解设置组件的作用域

📫作者简介:zhz小白 公众号:小白的Java进阶之路 专业技能: 1、Java基础,并精通多线程的开发,熟悉JVM原理 2、熟悉Java基础,并精通多线程的开发,熟悉JVM原理,具备⼀定的线…

VCED:学习Jina的简单操作

文章目录VCED:学习Jina的简单操作在pycharm里连接docker环境几个简单的jina demoimagetextvideoVCED:学习Jina的简单操作 在pycharm里连接docker环境 在pycharm里找到docker环境 New一个环境 在docker里进入terminal,找到python 位置 成功得到decker环境 运行jina…

004_步进电机实验

步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。本章主要从步进电机的结构、工作原理、电机参数分别介绍,最后通过实验来实现步进电机运动的简单控制。本章所要实现的功能是:通过 ULN2003 驱动模块控制 28BYJ48 步进电机运行方向及速度&…

bugku-web-社工-初步收集

题目首页 社工又有杂项的存在 打开题目 小时候可能特感兴趣的网站 目录扫描一下 dirsearch 得到一个管理员后台登录网站 但是需要密码 再回到起始页面 存在一个下载点 可以操作 下载得到一个压缩包 解压打开 是一个小插件 尝试登录 同时 打开wireshark进行流量截取…

Nacos安装指南

Nacos安装指南 1.Windows安装 开发阶段采用单机安装即可。 1.1.下载安装包 在Nacos的GitHub页面,提供有下载链接,可以下载编译好的Nacos服务端或者源代码: GitHub主页:https://github.com/alibaba/nacos GitHub的Release下载…

Monaco Editor教程(十六):缩略图minimap的配置详解

背景 缩略图 (Minimap) 是一种常见的用于快速预览和探索的工具,可作为导航辅助用户探索大规模图。 在大文件的阅读和编辑中,能够起到很好的导航作用,并且缩略图能够显示文件结构的大致轮廓,使开发人员能够快速知道对应的编辑位置…

WordPress重新安装的几种方法(2022年新版教程)

我们在建网站的过程中,可能出于某些原因会把网站重装,例如网站中病毒了、网站做的不满意,重头开始。本文会给大家分享一下2022年可行的重装WordPress网站方法。 1 重装WordPress的方法 方法一:重置数据库 方法二:宝塔面…

【MySQL】MySQL基础、详细总结

数据库Mysql 内容管理数据库基础什么是DB、DBMS、DBS、DBA?什么是元组、码、候选码、主、外码(键)、(非)主属性?主、外码的区别?为什么不推荐使用外码和级联 ?【分布式高并发】什么是…