首页 > 编程语言 >python笔试--输入输出总结(四)

python笔试--输入输出总结(四)

时间:2024-10-14 18:51:10浏览次数:10  
标签:salary name re python age 输入输出 -- 字符串 self

1、递归函数

递归函数是一种在函数内部调用自身的函数。递归是一种强大的编程方法,常用于解决那些可以分解为更小、更简单的问题的问题。递归函数通常遵循以下定义:

  • 基本案例(Base Case):递归函数必须有一个或多个基本情况,这些情况是函数不再调用自身就能直接求解的条件。基本情况是递归的停止条件,防止函数无限地调用自身。
  • 递归步骤(Recursive Step):在递归步骤中,函数调用自身来处理一个规模更小的子问题。递归步骤通常会逐步接近基本情况。
  • 递归调用(Recursive Call):递归函数内部对自身的调用

例题:

兔子的数量以这样的方式增长:每个月的兔子数量等于它前一个月的兔子数量加它前两个月的兔子数量,即f(n)=f(n-1)+f(n-2)。假设第1个月的兔子有2只,第2个月的兔子有3只,你能使用递归的方法求得第n个月的兔子有多少只吗?

  • 已知:第1个月和第二个月的兔子数量
  • 递归公式:f(n)=f(n-1)+f(n-2)
  • 思路:调用自身函数得到前1个月和前2个月的兔子数量,到第一个月和第二个月时可以带入具体的值,将结果带入得到最终的数量
def rabbit_count(n):
    if n == 1:
        rcount = 2
    elif n == 2:
        rcount = 3
    else:
        rcount = rabbit_count(n-1) + rabbit_count(n-2)
    return rcount

n = int(input())
print(rabbit_count(n))

2、定义一个类,实现相应功能

 2.1 案例1

请为牛客网的员工创建一个Employee类,包括属性有姓名(name)、(salary),并设置初始化。同时该类包括一个方法printclass,用于输出类似'NiuNiu‘s salary is 4000, and his age is 22'的语句。

请根据输入的name与salary为该类创建实例e,并调用printclass方法输出信息,如果没有年龄信息则输出错误信息"Error! No age"。

根据输入的年龄为实例e直接添加属性age等于输入值,再次调用printclass方法输出信息。(printclass方法中建议使用try...except...结构)

import sys
#定义一个类
class Employee:
    #初始化一个类
    def __init__(self,name,salary):
        self.name = name
        self.salary = salary

    def printclass(self):
        try:
            print(f"{self.name}'salary is {self.salary}, and his age is {self.age}")
        except:
            print("Error! No age")
        
name = str(input())
salary = int(input())
#创建一个实例
e = Employee(name,salary)
#调用函数
e.printclass()
age = int(input())
#增加一个属性
e.age = age
#重新调用函数
e.printclass()
""" 输入:
NiuNiu
8000
22 """
""" 输出:
Error! No age
NiuNiu'salary is 8000, and his age is 22 """

2.2 案例2 

请为牛客网的员工创建一个Employee类,包括属性有姓名(name)、(salary),并设置初始化。同时该类包括一个方法printclass,用于输出类似'NiuNiu‘s salary is 4000, and his age is 22'的语句。

请根据输入的信息为Employee类创建一个实例e,调用hasattr方法检验实例有没有属性age,如果存在属性age直接调用printclass输出,否则使用setattr函数为其添加属性age,并设置值为输入后,再调用printclass输出。

import sys

class Employee:
    def __init__(self,name,salary):
        self.name = name
        self.salary = salary

    def printclass(self):
        print(f"{self.name}'s salary is {self.salary}, and his age is {self.age}")
    

name = input()
salary = input()
age = input()
e = Employee(name,salary)
if hasattr(e,'age'):
    e.printclass()
else:
    print("False")
    setattr(e,'age',age)
    e.printclass()

 

3、正则表达式

3.1 正则查找网址

输出网址从开头匹配到第一位不匹配的范围

import re

print(re.match(r"https://www","https://www.Nowcoder.com").span())

#输出:(0,11)

re.match 是 Python 的 re 模块中的一个函数,用于在字符串的起始位置进行正则表达式的匹配。(1) 匹配模式

re.match 只会在字符串的开始位置尝试匹配正则表达式,如果字符串的开头与正则表达式不匹配,re.match 将返回 None。

(2) 参数:

  • pattern:这是第一个参数,表示要匹配的正则表达式。
  • string:这是第二个参数,表示要搜索的字符串。
  • flags(可选):这是第三个参数,用于修改正则表达式的行为,例如忽略大小(re.IGNORECASE 或 re.I)。

(3) 返回值:

如果匹配成功,re.match 返回一个匹配对象(Match Object),这个对象包含了关于匹配的信息,如匹配的字符串、匹配的位置等。 如果匹配失败,返回 None。

(4) 方法:

  • .group():返回被正则表达式匹配的字符串。
  • .start() 和 .end():返回匹配字符串在原字符串中的起始和结束位置的索引。
  • .span():返回一个元组,包含匹配字符串在原字符串中的起始和结束位置的索引。

3.2 去除非数字字符

print(re.sub(r"\D","","2022-063-109NiuMei"))
#\D去除非数字字符
#输出:2022063109

print(re.sub(r"\d","","2022-063-109NiuMei"))
#\D去除数字字符
#输出:--NiuMei

 re.sub 是 Python 的 re 模块中的一个函数,用于替换字符串中匹配正则表达式的部分。

(1) 参数:

  • pattern:这是第一个参数,表示正则表达式模式。
  • repl:这是第二个参数,表示替换匹配字符串的字符串或一个函数。
  • string:这是第三个参数,表示要被搜索并替换的原始字符串。
  • count(可选):这是第四个参数,表示要替换的最大次数,默认值为 0,表示替换所有匹配的字符串。
  • flags(可选):这是第五个参数,用于修改正则表达式的行为,例如忽略大小写(re.IGNORECASE 或 re.I)。

(2)返回值:

返回一个新的字符串,其中原始字符串中所有匹配正则表达式的部分都被替换成了 repl 指定的字符串或通过 repl 函数返回的字符串。

这个板块终于结束了!!!

标签:salary,name,re,python,age,输入输出,--,字符串,self
From: https://blog.csdn.net/qq_65509025/article/details/142623976

相关文章

  • 题解:P11063 【MX-X4-T3】「Jason-1」数对变换
    ProblemLink【MX-X4-T3】「Jason-1」数对变换题外话场上把贪心注重在一个奇怪地方了,导致交的时候已经有\(9\)个人\(\textcolor{green}{AC}\)了(哭)。题意简述对于数对\((x,y)\),你可以执行以下两种变换:类型1:取\(1\lek\lex\),令\((x,y)\gets(\lfloor\frac{x}{k}......
  • 洛谷P1373:小 a 和 uim 之大逃离
    洛谷P1373:小a和uim之大逃离题意略思路DP:记dp[i][j][c][0/1]表示走到\(i\)行\(j\)列时,两人容量之差为\(c\)的方案数,\(0\)表示\(\rm小a\)走的最后一步,\(1\)表示\(\rmuim\)走的最后一步。容易得出转移方程:dp[i][j][l][0]+=dp[i-1][j][l-a[i][j]+k][1];dp[......
  • Cascader 级联选择器代码实现
    当一个数据集合有清晰的层级结构时,可通过级联选择器Cascader 逐级查看并选择,在开发过程中,非常常见,解决选择列表数量过多的情况。结果1、组件<el-cascader:props="props":options="unitData"v-model="query.UnitName"size="small"style="margin-left:10px;margin-rig......
  • 题解:P10370 「LAOI-4」Mex Tower (Hard ver.)
    ProblemLink「LAOI-4」MexTower(Hardver.)题意给定一个长度为$n$的序列$a$,求序列的$\operatorname{Mex}$值是否大于等于其他所有长度为$n$的自然数序列的$\operatorname{Mex}$值。Solution不难发现,两个数或一个序列的$\operatorname{Mex}$一定是......
  • CANoe使用C#调用系统变量方法
    在汽车电子开发和测试领域,CANoe是一个不可或缺的工具,它广泛应用于网络仿真、测试和诊断。通过C#编程,开发者可以轻松地与CANoe的系统变量进行交互,实现对测试过程的实时监控和控制。本文将详细介绍如何使用C#设置和获取CANoe的系统变量,并提供相应的代码示例。1.背景......
  • 题解:擬二等辺三角形
    ProblemLink擬二等辺三角形题面翻译定义一个三角形为“伪等腰三角形”需满足以下三个条件:三边长度都为自然数。三边长度各不相同。有其中两条边的长度之差为\(1\)。现在给你一个数\(n\),求周长小于等于\(n\)的“伪等腰三角形”个数,答案对\(1000000007\)取模......
  • Elementui树形列表控件tree-box
    效果图(在vue2项目开发中,实现了树形列表查看及筛选等交互,用清晰的层级结构展示信息) 开发步骤及代码,来喽!!无脑copy1、组件基本框架  DeviceTree 是基于 Vue.js 和 ElementUI 构建的树形组件。通过 el-tree 组件显示树状结构。组件的外部可通过传递 props 来控制......
  • C++在vscode中的code runner配置/环境配置
    C++在vscode中快捷运行(coderunner)一、配置tasks.json在vscode中创建文件夹或打开文件夹,会发现文件夹下多了一个.vscode文件夹,在该文件夹下创建tasks.json文件,并添加一下内容{"version":"2.0.0","tasks":[{"type":"shell","la......
  • 省选模拟赛
    认为只有k个位置有值的序列差分之后会形成k个颜色段,建议送回普及组重学差分与前缀和A考虑把硬币序列异或差分,操作变成选两个距离为\(a_i\)的位置翻转,差分完序列上只有\(2k\)个\(1\),对其中任意两个\(1\)预处理出把它们同时变为\(0\)的最小操作数,状压BFS即可。B......
  • 如何在 Jupyter Notebook 执行和学习 SQL 语句(上)—— 基本原理详解和相关库安装篇
            近期我找工作很多岗位问到sql,由于我简历上有写,加上我实习的时候确实运用了,所以我还是准备复习一下SQL语句,常见的内容,主要包括一些内容,比如SQL基础(主要是取数select,毕竟用的时候基本上不会让我一个实习生进行一个删除之类的操作)和一些进阶的用法比如窗口函数之......