python面试题【题目+答案】

最近遇到了一份python的面试题,题目比较简单,时间控制在一个小时之内。以下是面试的题目跟答案,答案不代表最优解,只是当时所想到的一些思路,接下来将分享给大家。

目录

1. 给出下面打印结果

2.字典如何删除键、如何合并两个字典

3. 下列正则表达式可以匹配 www.tencent-inc.com 的有哪些

4. 有一些文件,路径如下图

 module_x.py想引用module_y.py的方法,该如何写

 module_z.py想引用module_y.py的方法,该如何写

5. 请指出下列程序是否会有报错

6. 写出一段Python代码实现删除一个list里面的重复元素

7. 给定一组由小到大的数字0,1,2...,n,从中找出一个丢失的数字。

8.给定一个字符串,里边可能包含“()”、"{}"两种括号,请编写程序检查该字符串的括号是否成对出现。

9.请编写代码实现一个【单例】类MoreFun,要求该类的__init__函数只能被调用一次

10.编写代码实现方法get_time_in_range

 11.给定一个整数数组nums和一个目标值target,请你再该数组中找出和为目标值的那两个证书,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组同一个元素不能使用两遍。​编辑


1. 给出下面打印结果

答案:

12.0 

6.0

这道题很简单,定义了两个函数,并将x作为参数分别调用两个函数并输出结果。

两个函数都判断了传入列表是否为空,funcA函数将列表中每一个元素用float()方法转化为浮点数,并返回列表中的最大值。因此,输出12.0。

funcB也是将列表中每一个元素用float转化为浮点数,返回时先将列表用sum()方法求和再除以列表的长度。因此,输出6.0

2.字典如何删除键、如何合并两个字典

答:

       删除键:1、可以使用del关键字来从字典中删除指定的键

       如,从dictA中删除key为“a”,可以用del dictA[‘a’]

2、可以使用pop()方法来删除指定键,这个方法可以返回该键对应的值,如果键不存在,则可以提供一个默认值作pop()方法的第二个参数。

如,result = dictA.pop(‘a’,None)

      

       合并字典:1、可以使用update()方法来合并字典。

       如,dictA.update(dictB)。此时dictA则是已经合并了dictB。

2、使用dict()构造函数

如,dictA(dictA,**dictB)

3. 下列正则表达式可以匹配 www.tencent-inc.com 的有哪些

     ^\w+\.\w+\-\w+\.\w+$

     [w]{0,3}.[a-z\-]*.[a-z]+

     [c-w.]{3,10}[.][c-w.][.][a]

     [w][w][w][tencent-inc]+[com]+

     ^\w.*com$

     [w]{3}.[a-z\-]{11}.[a-z]{3}

我们来逐条分析:

  1. ^\w+\.\w+\-\w+\.\w+$

    • 匹配形式为word1.word2-word3.word4的字符串,其中每个word由一个或多个\w(字母、数字或下划线)组成。
    • 不匹配"www.tencent-inc.com"。
  2. [w]{0,3}.[a-z\-]*.[a-z]+

    • 匹配任意长度的w(小写字母"w")后跟一个任意字符、一个由小写字母和连字符("-")组成的字符串,再后跟一个由小写字母组成的字符串。
    • 不匹配"www.tencent-inc.com"。
  3. [c-w.]{3,10}[.][c-w.][.][a]

    • 匹配由cw范围内的字符、点号(".")、再由cw范围内的字符、点号(".")、再匹配一个字母a
    • 不匹配 "www.tencent-inc.com"。
  4. [w][w][w][tencent-inc]+[com]+

    • 匹配由3个连续的小写字母w、一个或多个连续的"tencent-inc"、一个或多个连续的"com"组成的字符串,但是没有匹配到"."。
    • 不匹配 "www.tencent-inc.com"。
  5. ^\w.*com$

    • 匹配以字母、数字或下划线开头,且以"com"结尾的字符串。^表示字符串的开始,$表示字符串的结尾。
    • 匹配"www.tencent-inc.com"。
  6. [w]{3}.[a-z\-]{11}.[a-z]{3}

    • 匹配由3个连续的小写字母w、一个由小写字母和连字符("-")组成的11字符字符串、再后跟由小写字母组成的3字符字符串。
    • 不匹配 "www.tencent-inc.com"。

因此,能够匹配到"www.tencent-inc.com"的正则表达式是:

  • [w][w][w][tencent-inc]+[com]+
  • ^\w.*com$

4. 有一些文件,路径如下图

  •  module_x.py想引用module_y.py的方法,该如何写

 答:import moudule_y

  •  module_z.py想引用module_y.py的方法,该如何写

答:相对导入:在package创建一个空的__init__.py文件,

可使用from..subpackage1 import module_y 来导入module_y的方法

绝对路径导入:from my_package.subpackage1 import y

5. 请指出下列程序是否会有报错

url='http://www.qq.com'

def func():

    print(url)

    url = url.split(".")[1]

    print(url)

if __name__=='__main__':

    func()

 答:程序会报错。url是全局变量,在func()函数内部中尝试去修改全局作用域的变量会导致报错。在函数中使用global关键字声明url是全局变量可以避免报错,如:

url='http://www.qq.com'def func():global urlprint(url)url = url.split(".")[1]print(url)if __name__=='__main__':func()

6. 写出一段Python代码实现删除一个list里面的重复元素

答:可以使用python内置函数set()来实现,set()是集合,集合中不允许存在重复元素。如:

def func(list):

       return list(set(list))

7. 给定一组由小到大的数字0,1,2...,n,从中找出一个丢失的数字。

例如,给定nums = [0, 0, 1, 3, 4]返回2。

答:先获取最大的数字,然后生成一个从小到大的数列,对比两者即可得到丢失数字。
def func(nums):
    num_range = list(range(nums[-1])) #生成从小到大的数列
    return set(num_range)-set(nums)

8.给定一个字符串,里边可能包含“()”、"{}"两种括号,请编写程序检查该字符串的括号是否成对出现。

输出:

true:代表括号成对出现并且嵌套正确,或字符串无括号字符。

false:未正确使用括号字符。

答:count可以统计字符串中的某一字符出现次数

def func(str):
    if (str.count('(') != str.count(')')) or (str.count('{') != str.count('}')):
        return False
    else:
        return True

9.请编写代码实现一个【单例】类MoreFun,要求该类的__init__函数只能被调用一次

答:

class MoreFun:_instance = None  # 类变量,用于保存类的唯一实例def __new__(cls, *args, **kwargs):if cls._instance is None:cls._instance = super().__new__(cls)return cls._instancedef __init__(self):if not hasattr(self, '_initialized'):self._initialized = True# 在这里进行初始化操作,确保__init__函数只被调用一次

10.编写代码实现方法get_time_in_range

输入:字符串形式的时间起/止节点

输出:两个时间节点间的所有整数小时节点,左闭右开

>>get_time_in_range( “2018/11/12 21:01:01”, “2018/11/13 01:01:01”)

>>[“2018/11/12/21/”, “2018/11/12/22/”, “2018/11/12/23/”, “2018/11/13/00/” , “2018/11/13/01/” ]

答:

def get_time_in_range(start_time, end_time):time_format = "%Y/%m/%d %H:%M:%S"start_datetime = datetime.strptime(start_time, time_format)end_datetime = datetime.strptime(end_time, time_format)time_in_range = []current_datetime = start_datetimewhile current_datetime < end_datetime:time_in_range.append(current_datetime.strftime("%Y/%m/%d/%H/"))current_datetime += timedelta(hours=1)return time_in_range

 11.给定一个整数数组nums和一个目标值target,请你再该数组中找出和为目标值的那两个证书,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组同一个元素不能使用两遍。

答 :

def func(nums , target):n = [] #定义已使用过的元素容器for i in range(len(nums)):#如果该元素使用过则跳过此次循环if nums[i] in n:continuefor j in range(len(nums)):if nums[i]+nums[j] == target:print(nums[i],nums[j])n.append(nums[i])n.append(nums[j])
#验证
nums = [2,4,6,8,10,12]
target = 12
func(nums,target)

对待面试题的时候我们可以先猜一下这道题的考点是什么,答出面试官想要的答案。

以上就是今日份的面试题,祝同学们早日找到合适的工作,事业有成~

如果此博客反响好的话我会考虑专门出个python面试专栏来解答童鞋们的疑惑哦,让我们一起进步吧!

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

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

相关文章

PySpark介绍与安装

Spark是什么 定义&#xff1a;Apache Spark是用于大规模数据&#xff08;large-scala data&#xff09;处理的统一&#xff08;unified&#xff09;分析引擎。 简单来说&#xff0c;Spark是一款分布式的计算框架&#xff0c;用于调度成百上千的服务器集群&#xff0c;计算TB、…

无涯教程-Lua - for语句函数

for 循环是一种重复控制结构&#xff0c;可让您有效地编写需要执行特定次数的循环。 for loop - 语法 Lua编程语言中 for 循环的语法如下- for init,max/min value, increment dostatement(s) end 这是 for 循环中的控制流程- 首先执行 init 步骤&#xff0c;并且仅执行一…

NO4 实验四:生成Web工程

1、说明 使用 mvn archetype&#xff1a;generate 命令生成 Web 工程时&#xff0c;需要使用一个专门的 archetype。这个专门生成 Web 工程骨架的 archetype 可以参照官网看到它的用法&#xff1a; 2、操作 注意&#xff1a;如果在上一个工程的目录下执行 mvn archetype&…

spring-bean配置信息重用(继承)和bean创建顺序是什么以及bean 对象的单例和多例讲解

&#x1f600;前言 本章是spring基于XML 配置bean系类中第5篇讲解spring-bean配置信息重用(继承)和bean创建顺序是什么以及bean 对象的单例和多例讲解 &#x1f3e0;个人主页&#xff1a;尘觉主页 &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是尘觉&#xff0c;希…

【多线程系列-04】深入理解java中线程间的通信机制

多线程系列整体栏目 内容链接地址【一】深入理解进程、线程和CPU之间的关系https://blog.csdn.net/zhenghuishengq/article/details/131714191【二】java创建线程的方式到底有几种&#xff1f;(详解)https://blog.csdn.net/zhenghuishengq/article/details/127968166【三】深入…

Kafka的零拷贝

传统的IO模型 如果要把磁盘中的某个文件发送到远程服务器需要经历以下几个步骤 (1) 从磁盘中读取文件的内容&#xff0c;然后拷贝到内核缓冲区 (2) CPU把内核缓冲区的数据赋值到用户空间的缓冲区 (3) 在用户程序中调用write方法&#xff0c;把用户缓冲区的数据拷贝到内核下面…

Balanced Multimodal Learning via On-the-fly Gradient Modulation

摘要 多模态学习通过整合不同的感官&#xff0c;有助于全面理解世界。因此&#xff0c;多种输入模式有望提高模型的性能&#xff0c;但我们实际上发现&#xff0c;即使多模态模型优于其单模态模型&#xff0c;它们也没有得到充分利用。具体地说&#xff0c;在本文中&#xff0…

【雕爷学编程】MicroPython动手做(27)——物联网之掌控板小程序

知识点&#xff1a;什么是掌控板&#xff1f; 掌控板是一块普及STEAM创客教育、人工智能教育、机器人编程教育的开源智能硬件。它集成ESP-32高性能双核芯片&#xff0c;支持WiFi和蓝牙双模通信&#xff0c;可作为物联网节点&#xff0c;实现物联网应用。同时掌控板上集成了OLED…

聊聊工程化 Docker 的最新趋势以及最佳实践

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

Java开发中的------修改密码+忘记密码

目录 1.修改密码 客户端响应 前端vue 后端 controller层 ServiceImpl实现层 2.忘记密码 客户端响应 后端 controller层 serviceImpl实现层 本章需要准备&#xff1a;springcloud项目&#xff0c;依赖&#xff0c;数据库.... 数据库SQL SET FOREIGN_KEY_CHECKS0;-- -…

使用langchain与你自己的数据对话(四):问答(question answering)

之前我已经完成了使用langchain与你自己的数据对话的前三篇博客&#xff0c;还没有阅读这三篇博客的朋友可以先阅读一下&#xff1a; 使用langchain与你自己的数据对话(一)&#xff1a;文档加载与切割使用langchain与你自己的数据对话(二)&#xff1a;向量存储与嵌入使用langc…

Race竞争型漏洞

目录 Race竞争介绍 实验环境配置 安装Cookiecutter 创建基于Django框架的项目 选择配置 创建数据库 加载到环境变量里 数据库的生成 创建一个超级用户&#xff08;superuser&#xff09; 启动一个本地开发服务器 配置文件 Race竞争介绍 竞争型漏洞&#xff08;Race Co…

leetcode(力扣) 剑指 Offer 12. 矩阵中的路径(回溯 DFS)

文章目录 题目描述思路分析完整代码 题目描述 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 单词必须按照字母顺序&#xff0c;通过相邻的单元格内的字母构成&#xff…

redis的事务、redis持久化方案、Java操作redis数据库

五、redis的事务 开启事务&#xff1a; 要等左边的提交事务&#xff0c;右边才能拿到修改后的值 本来name不能增加&#xff0c;会报错&#xff0c;但是事务中没提交不知道错 此时提交数据&#xff1a; redis事务将成功的正常提交&#xff0c;失败的才回滚&#xff0c;所以不具备…

Python简要复习

Python程序设计复习 Python基础知识 python的特点 兼具编译型和解释型特性&#xff0c;兼顾过程式、函数式和面向对象编程范式的通用编程语言 解释型语言无需像编译型需要一次性的编译成机器码&#xff0c;然后运行&#xff0c;而是由名叫解释器的程序动态的将源代码逐句转…

深度学习之反向传播

0 特别说明 0.1 学习视频源于&#xff1a;b站&#xff1a;刘二大人《PyTorch深度学习实践》 0.2 本章内容为自主学习总结内容&#xff0c;若有错误欢迎指正&#xff01; 1 forward&#xff08;前馈运算&#xff09;过程 通过输入相应的x和权重w&#xff08;可能涉及bais偏置…

docker push 报错:unauthorized: unauthorized to access repository: library/xx处理方法

rootmaster:/home/data/harbor# sudo docker login 49.0.241.2 admin Harbor12345 1.报错原因分析 rootmaster:/home/data/harbor# docker push 49.0.241.2/library/nginx:latest #这种报错 The push refers to repository [49.0.241.2/library/nginx] Get "https://49.…

UE5 C++ SplineMesh蓝图函数库实现(小白笔记)

UE5 C SplineMesh的蓝图函数库实现方法 UAAABlueprintFunctionLibrary UAAABlueprintFunctionLibrary.h // Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreMinimal.h" #include "Components/Spline…

再探python装饰器

参考视频教学&#xff1a; 可能是b站上最好的Python装饰器教程_哔哩哔哩_bilibili 【python】如何在class内部定义一个装饰器&#xff1f;这里的坑你要么不知道&#xff0c;要么不会填&#xff01;_哔哩哔哩_bilibili 推荐&#xff01;先学习第一个视频&#xff0c;再学习第…

【iOS】多线程 锁问题总结

文章目录 前言1. 你理解的多线程优点缺点 2. atomic 和 nonatomic 的区别及其作用3. GCD的队列类型 - 三种队列类型4. GCD的死锁问题线程死锁的四个必要条件 5. 多线程之间的区别和联系6. 进程和线程&#xff1f;进程间的通信方式线程间的通信方式 6. iOS的线程安全手段如何保证…