华为、阿里巴巴、字节跳动 100+ Python 面试问题总结(七)

系列文章目录

个人简介:机电专业在读研究生,CSDN内容合伙人,博主个人首页
Python面试专栏:《Python面试》此专栏面向准备面试的2024届毕业生。欢迎阅读,一起进步!🌟🌟🌟
码字不易,如果觉得文章不错或能帮助到你学习,可以点赞👍收藏📁评论📒+关注哦!😊😊😊


文章目录

  • 系列文章目录
  • Python 编程面试问题
    • 84. range(0,20)[2:-2]执行结果?
    • 85. 用Python编写程序以生成星形三角形。
    • 86. 用Python编写程序生成Fibonacci序列。
    • 87. 用一行Python代码从给定列表中取出所有的奇数和偶数。
    • 88. 用Python编写程序以检查数字是否为质数。
    • 89. 编写程序检查数字是否为阿姆斯特朗数。
    • 90. 用Python编写程序以检查序列是否是回文。
    • 91. 用Python编写程序检查一序列中所有数字是否唯一。
    • 92. 编写程序查找文本文件中最长的单词。
    • 93. 编写一个程序来统计给定文本文件的每个字符的数量。
    • 94. 编写一个程序来检查并返回总和值等于目标值N的给定数组A中的对。
    • 95. 编写一个程序以在不使用加号运算符的情况下将两个正整数相加。
    • 96. 编写一个程序来求解给定的方程 ax + by = c,mx + ny = o,假设 a, b, c, m, n, o 是常数。
    • 97. 编写一个程序来匹配字母a后跟4到8个b的字符串。
    • 98. 编写一个程序,将日期从yyyy-mm-dd格式转换为dd-mm-yyyy格式。
    • 99. 编写一个程序来组合两个不同的词典。组合时,如果找到相同的键,则可以将这些相同键的值相加, 输出新字典。

本文是Python面试专栏的第六篇。在本专栏中,我将总结华为、阿里巴巴、字节跳动等互联网公司 Python 面试中最常见的 100+ 问题。每道题都提供参考答案,希望能够帮助你在求职面试中脱颖而出,找到一份高薪工作。这些面试题涉及 Python 基础知识、Python 编程、数据分析以及 Python 函数库等多个方面。

Python 编程面试问题

84. range(0,20)[2:-2]执行结果?

range(0,20)[2:-2] 的执行结果是一个包含索引从 2 到 18(不包括索引为 -2)的迭代器。换句话说,执行这个代码会返回一个从 2 到 17 的序列。

85. 用Python编写程序以生成星形三角形。

下面是使用 Python 编写的生成星形三角形的程序:

rows = int(input("请输入行数:"))for i in range(1, rows + 1):# 打印空格print(" " * (rows - i), end="")# 打印星号print("*" * (2 * i - 1))

86. 用Python编写程序生成Fibonacci序列。

首先,斐波那契数列是以 0 和 1 开始的,每个后续数字都是前两个数字之和。下面是使用 Python 编写的生成 Fibonacci 序列的程序:

def fibonacci(n):fib_list = [0, 1]  # 初始的斐波那契数列if n <= 0:return []elif n == 1:return [fib_list[0]]elif n == 2:return fib_listfor i in range(2, n):next_num = fib_list[i-1] + fib_list[i-2]  # 计算下一个斐波那契数fib_list.append(next_num)  # 将下一个斐波那契数添加到列表中return fib_listn = int(input("请输入要生成的斐波那契数列的长度:"))
fibonacci_series = fibonacci(n)
print(fibonacci_series)

87. 用一行Python代码从给定列表中取出所有的奇数和偶数。

下面是使用 Python 编写的从给定列表中取出所有的奇数和偶数的程序:

a = [1,2,3,4,5,6,7,8,9,10]
odd, even = [el for el in a if el % 2==1], [el for el in a if el % 2==0]print(odd,even)

88. 用Python编写程序以检查数字是否为质数。

下面是使用 Python 编写的检查数字是否为质数的程序:

def is_prime(num):if num < 2:  # 小于2的数不是质数return Falsefor i in range(2, int(num**0.5) + 1):if num % i == 0:  # 若能被某个数整除,说明不是质数return Falsereturn Truenum = int(input("请输入一个数字:"))
if is_prime(num):print(num, "是质数")
else:print(num, "不是质数")

在函数内部,首先排除小于2的数,因为质数定义为大于 1 的数。然后,使用一个循环从 2 到该数的平方根进行迭代,检查是否存在能整除该数的因子。如果存在这样的因子,则该数不是质数,否则是质数。

89. 编写程序检查数字是否为阿姆斯特朗数。

阿姆斯特朗数是指一个 n 位数(n>=3),它的每个位上的数字的 n 次幂之和等于它本身。下面是使用 Python 编写的判断数字是否为阿姆斯特朗数的程序:

def is_armstrong_number(num):# 将数字转换为字符串,以便获取各个位上的数字num_str = str(num)# 计算数字的位数num_length = len(num_str)# 初始化总和total = 0# 计算每个位上数字的n次幂之和for digit in num_str:total += int(digit) ** num_length# 判断总和是否等于原始数字if total == num:return Trueelse:return False# 示例输入
number = int(input("请输入一个数字:"))if is_armstrong_number(number):print("是阿姆斯特朗数")
else:print("不是阿姆斯特朗数")

在这个程序中,定义了一个 is_armstrong_number 函数。首先,将输入的数字转换为字符串,以便能够获取各个位上的数字。然后,计算数字的位数。接着,初始化一个变量 total 用于存储每个位上数字的 n 次幂之和。然后,通过遍历字符串中的每个字符,将每个位上数字的 n 次幂加到 total 中。最后,判断 total 是否等于原始数字,如果相等,则返回 True;否则,返回 False

90. 用Python编写程序以检查序列是否是回文。

下面是使用 Python 编写的检查序列是否是回文的程序:

def is_palindrome(sequence):reversed_sequence = sequence[::-1]  # 将序列反转if sequence == reversed_sequence:  # 比较原序列和反转后的序列return Trueelse:return Falsesequence = input("请输入一个序列:")
if is_palindrome(sequence):print("是回文序列")
else:print("不是回文序列")

这个程序会要求输入一个序列,可以是字符串、列表或元组等。然后,使用 is_palindrome 函数来判断该序列是否是回文。在函数内部,通过将原序列反转后再与原序列进行比较,如果相等则说明是回文序列,返回 True;否则,返回 False

91. 用Python编写程序检查一序列中所有数字是否唯一。

下面是使用 Python 编写的检查序列中所有数字是否唯一的程序:

def is_unique(sequence):unique_set = set(sequence)  # 将序列转换为集合if len(sequence) == len(unique_set):  # 判断集合中元素的数量与序列长度是否相等return Trueelse:return Falsesequence = input("请输入一个序列,以空格分隔每个数字:")
sequence_list = sequence.split()  # 将输入的序列字符串转换为列表
if is_unique(sequence_list):print("序列中的所有数字是唯一的")
else:print("序列中存在重复的数字")

这个程序会要求输入一个序列,每个数字之间用空格分隔。然后,在函数内部,将序列转换为集合,由于集合中不能包含重复元素,所以如果集合的大小与序列长度相等,则说明序列中的所有数字都是唯一的。

92. 编写程序查找文本文件中最长的单词。

下面是使用 Python 编写的程序,用于查找文本文件中最长的单词:

def find_longest_word(file_path):longest_word = ""with open(file_path, 'r') as file:# 读取文件内容content = file.read()# 按空格拆分文本内容为单词列表words = content.split()# 遍历单词列表,更新最长单词for word in words:if len(word) > len(longest_word):longest_word = wordreturn longest_word# 示例输入,文件路径
file_path = "example.txt"longest_word = find_longest_word(file_path)print("最长的单词是:", longest_word)

在这个程序中,定义了一个 find_longest_word 函数。首先,打开指定路径的文本文件,并使用 read 方法读取文件内容。然后,将文件内容按空格拆分为一个单词列表。接着,遍历单词列表,比较每个单词的长度与当前最长单词的长度,如果更长,则更新最长单词。最后,返回最长的单词。

93. 编写一个程序来统计给定文本文件的每个字符的数量。

下面是使用 Python 编写的统计给定文本文件中每个字符数量的程序:

def count_characters(filename):character_count = {}with open(filename, 'r') as file:content = file.read()for char in content:if char in character_count:character_count[char] += 1else:character_count[char] = 1return character_countfilename = input("请输入要统计的文本文件名:")
result = count_characters(filename)print("每个字符的数量统计结果:")
for char, count in result.items():print(f"{char}: {count}")

这个程序会要求输入给定文本文件的文件名。首先,使用 open 函数打开指定的文件,并使用 read 方法读取文件内容。然后,遍历文件内容中的每个字符,并使用字典来记录每个字符出现的次数。如果字符已经存在于字典中,则将对应的计数加 1;否则,在字典中添加该字符并将计数初始化为 1。最后,返回统计结果的字典。

94. 编写一个程序来检查并返回总和值等于目标值N的给定数组A中的对。

下面是使用 Python 编写的检查并返回给定数组 A 中总和等于目标值 N 的对的程序:

def find_sum_pairs(array, target):pairs = []for i in range(len(array)):for j in range(i + 1, len(array)):if array[i] + array[j] == target:pairs.append((array[i], array[j]))return pairs# 示例输入
A = [2, 4, 6, 3, 1, 5]
N = 7result = find_sum_pairs(A, N)print(f"总和等于 {N} 的对:")
for pair in result:print(pair)

这个程序中,定义了一个 find_sum_pairs 函数,用于在给定的数组 A 中查找总和等于目标值 N 的数字对。该函数使用两层循环遍历所有可能的数字对,并检查它们的总和是否等于目标值。

95. 编写一个程序以在不使用加号运算符的情况下将两个正整数相加。

下面是使用 Python 编写的在不使用加号运算符的情况下将两个正整数相加的程序:

def add_without_plus(a, b):while b != 0:carry = a & b  # 计算进位a = a ^ b  # 非进位和b = carry << 1  # 左移一位,作为下一轮的进位return anum1 = int(input("请输入第一个正整数:"))
num2 = int(input("请输入第二个正整数:"))result = add_without_plus(num1, num2)
print("两个数字的和为:", result)

这个程序中,定义了一个 add_without_plus 函数,使用循环来模拟加法运算的过程。在循环中,使用位操作符进行计算。首先,使用按位与(&)运算符计算出进位值(carry),然后使用异或(^)运算符计算出非进位和(sum)。接着,将进位值左移一位(<<),作为下一轮计算的进位。重复这个过程直到进位值为 0,即完成相加的过程。

96. 编写一个程序来求解给定的方程 ax + by = c,mx + ny = o,假设 a, b, c, m, n, o 是常数。

要解决给定的方程组 ax + by = cmx + ny = o,可以使用线性代数中的方法。下面是一个使用 Python 编写的求解方程组的程序:

import numpy as npdef solve_equation(a, b, c, m, n, o):coefficients = np.array([[a, b], [m, n]])constants = np.array([c, o])try:solution = np.linalg.solve(coefficients, constants)return solutionexcept np.linalg.LinAlgError:print("方程组无解")# 示例输入
a = 2
b = 3
c = 10
m = 5
n = -7
o = 8result = solve_equation(a, b, c, m, n, o)print(f"x 的值为: {result[0]}")
print(f"y 的值为: {result[1]}")

在这个程序中,首先导入了 NumPy 库用于进行线性代数计算。然后定义了一个 solve_equation 函数,用于求解给定的方程组。在函数内部,将方程的系数和常数分别存储在 NumPy 数组 coefficientsconstants 中。然后,使用 np.linalg.solve 函数来解方程组。如果方程组有解,则返回解的值;如果方程组无解,会抛出 np.linalg.LinAlgError 异常。

97. 编写一个程序来匹配字母a后跟4到8个b的字符串。

下面是使用 Python 编写的匹配字母 a 后跟 4 到 8 个 b 的字符串的程序:

import redef match_pattern(string):pattern = r'ab{4,8}'  # 正则表达式模式result = re.search(pattern, string)if result:return Trueelse:return Falseprint(match_pattern("abc"))  # prints False
print(match_pattern("aabbbbbc"))  # prints True

98. 编写一个程序,将日期从yyyy-mm-dd格式转换为dd-mm-yyyy格式。

下面是使用 Python 编写的将日期从 yyyy-mm-dd 格式转换为 dd-mm-yyyy 格式的程序:

def convert_date(date):parts = date.split("-")  # 拆分日期字符串if len(parts) != 3:  # 验证日期格式return "日期格式不正确"year = parts[0]month = parts[1]day = parts[2]converted_date = f"{day}-{month}-{year}"  # 构建转换后的日期字符串return converted_datedate = input("请输入日期(yyyy-mm-dd):")
converted_date = convert_date(date)
print("转换后的日期为:", converted_date)

99. 编写一个程序来组合两个不同的词典。组合时,如果找到相同的键,则可以将这些相同键的值相加, 输出新字典。

下面是使用 Python 编写的组合两个不同词典的程序,如果找到相同的键,则将它们的值相加并输出新字典:

from collections import Counterd1 = {'key1': 50, 'key2': 100, 'key3':200}
d2 = {'key1': 200, 'key2': 100, 'key4':300}
new_dict = Counter(d1) + Counter(d2)
print(new_dict)

上述程序使用了 Python 标准库中的 collections 模块中的 Counter 类来更简单地组合两个字典,并将具有相同键的值相加。

Counter 类用于计算可哈希对象的出现次数。在这里,可以利用 Counter 类的性质来实现字典值的相加和合并。

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

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

相关文章

v-md-editor自定义锚点(生成目录)数组转树结构

接前两篇博文&#xff0c;最终方案终于定了&#xff0c;也把之前做的编辑器模式给否决了&#xff0c;原因是系统中有老的文档需要平替&#xff0c;因此就不能通过编辑器这种模式了&#xff0c;太麻烦了。 最终方案&#xff1a;线下手动pandoc word转markdown&#xff0c;然后将…

在langchain中使用自定义example selector

在langchain中使用自定义example selector 简介 在之前的文章中&#xff0c;我们提到了可以在跟大模型交互的时候&#xff0c;给大模型提供一些具体的例子内容&#xff0c;方便大模型从这些内容中获取想要的答案。这种方便的机制在langchain中叫做FewShotPromptTemplate。 如…

使用Java根据表名导出与导入Sql

前言 很粗糙啊&#xff0c;有很多可以优化的地方&#xff0c;而且也不安全&#xff0c;但是临时用还是OK的&#xff0c;我这个是公司里面的单机软件&#xff0c;不联网。 嗨&#xff01;我是一名社交媒体增长黑客&#xff0c;很高兴能帮助您优化和丰富关于批量作业导出和导入…

pycharm离线安装依赖包

一、对于单个下载离线包&#xff0c;然后安装 1、先去https://pypi.org/网站下载离线包&#xff0c;下载到本地&#xff1b; 2、从磁盘中找到刚刚下载包&#xff0c;点击确定就可以安装了 二、将本地项目所有依赖包全部下载下来&#xff0c;然后批量在另一个项目&#xff…

nacos 报错状态403

前言 Docker安装nacos nacos启用账号、密码后遇到错误403 略 解决办法&#xff1a;配置账号和密码 spring:cloud:nacos:discovery:serverAddr: 172.19.0.190:8848username: nacospassword: nacosconfig:serverAddr: 172.19.0.190:8848username: nacospassword: nacosfile-…

Swift 5 数组如何获取集合的索引和对应的元素值

Swift 5 数组如何获取集合的索引和对应的元素值 在Swift 5中&#xff0c;你可以使用enumerated()方法来获取集合的索引和对应的元素值。这个方法会返回一个包含索引和元素的元组数组。以下是使用enumerated()方法来获取一个数组的索引和元素的示例&#xff1a; let array [1…

模型、策略和算法

模型(model)、策略(strategy)和算法(algorithm)是统计学习的所有内容. 模型是统计学习的最终结果&#xff0c;即决策函数(decision function) 或条件概率函数 &#xff0c;它被⽤来预测特定问题下&#xff0c;将来未知输⼊的输出结果. 策略是统计学习过程中的产⽣最优模型的评…

Redis的常用命令

Redis常用命令 1、字符串string操作命令 Redis中字符串类型常用命令: 命令含义SET key value设置指定key的值GET key获取指定key的值SETEX key seconds value设置指定key的值&#xff0c;并将key的过期时间设为seconds秒SETNX key value只有在key不存在时设置key的值 更多命…

微软杀入Web3:打造基于区块链的AI产品

作者&#xff1a;秦晋 2023年1月&#xff0c;微软向 ChatGPT 创建者 OpenAI 投资 100 亿美元&#xff0c;在AI业界引发格外关注。此举也让微软在AI的战略探索上提前取得有利位置。 2023年3月&#xff0c;微软软件工程师 Albacore 披露微软正在为Edge 浏览器测试内置的非托管加密…

【OpenCV常用函数:轮廓检测+外接矩形检测】cv2.findContours()+cv2.boundingRect()

文章目录 1、cv2.findContours()2、cv2.boundingRect() 1、cv2.findContours() 对具有黑色背景的二值图像寻找白色区域的轮廓&#xff0c;因此一般都会先经过cvtColor()灰度化和threshold()二值化后的图像作为输入。 cv2.findContous(image, mode, method[, contours[, hiera…

网神 SecGate 3600 防火墙任意文件上传漏洞复现(HW0day)

0x01 产品简介 网神SecGate3600下一代极速防火墙&#xff08;NSG系列&#xff09;是基于完全自主研发、经受市场检验的成熟稳定网神第三代SecOS操作系统 并且在专业防火墙、VPN、IPS的多年产品经验积累基础上精心研发的高性能下一代防火墙 专门为运营商、政府、军队、教育、大型…

cmake扩展(1)——VS+CMake创建Qt项目

创建项目 创建CMakeLists #cmake最低版本 cmake_minimum_required(VERSION 3.10) #项目名 project(regextool)#查找所有*.h,*.ui,*.cpp文件&#xff0c;并存入SOURCES中 file(GLOB SOURCES "*.cpp" "*.ui" "*.h")#开启moc set(CMAKE_AUTOMOC O…

Transformer(一)简述(注意力机制,NLP,CV通用模型)

目录 1.Encoder 1.1简单理解Attention 1.2.什么是self-attention 1.3.怎么计算self-attention 1.4.multi-headed 1.5.位置信息表达 2.decorder&#xff08;待补充&#xff09; 参考文献 1.Encoder 1.1简单理解Attention 比方说&#xff0c;下图中的热度图中我们希望专注于…

『赠书活动 | 第十七期』《Python网络爬虫:从入门到实战》

&#x1f497;wei_shuo的个人主页 &#x1f4ab;wei_shuo的学习社区 &#x1f310;Hello World &#xff01; 『赠书活动 &#xff5c; 第十七期』 本期书籍&#xff1a;《Python网络爬虫&#xff1a;从入门到实战》 赠书规则&#xff1a;评论区&#xff1a;点赞&#xff5c;收…

shell脚本之正则表达式

目录 一.常见的管道命令1.1sort命令1.2uniq命令1.3tr命令1.4cut命令1.5实例1.5.1统计当前主机连接状态1.5.2统计当前主机数 二.正则表达式2.1正则表达式的定义2.2常见元字符&#xff08;支持的工具&#xff1a;find&#xff0c;grep&#xff0c;egrep&#xff0c;sed和awk&…

高考招生咨询的问答系统设计与实现及源码

毕业设计–面向高考招生咨询的问答系统设计与实现 完整项目源码请—>私信留言 【原题&#xff1a;毕业设计–基于知识图谱的大学领域知识自动问答系统的设计与实现】 一、InfomationGet:完成领域知识的获取和数据库构建工作 1、Infomation:存储获取到的信息 (1)、九校联…

RabbitMQ 安装教程

RabbitMQ 安装教程 特殊说明 因为RabbitMQ基于Erlang开发&#xff0c;所以安装时需要先安装Erlang RabbitMQ和Erlang版本对应关系 查看地址&#xff1a;www.rabbitmq.com/which-erlan… 环境选择 Erlang: 23.3及以上 RabbitMQ: 3.10.1Windows 安装 1. 安装Erlang 下载地…

taro Swiper组件--异形滚动

效果 <SwiperindicatorDots{false}previousMargin50pxnextMargin50pxautoplay{false}interval100onChange{onChangeSwiper} >{[1,2,3].map((item, index) > {return (<SwiperItemkey{item-${index}}><View className{demo-item ${currentIndex index ? ac…

国产航顺HK32F030M: 内部参考电压

HK32F030MF4P6 用户手册 内部参考电压 adc.c #include "bsp_adc.h"/*** brief ADC GPIO 初始化* param 无* retval 无*/ static void ADCx_GPIO_Config(void) {GPIO_InitTypeDef GPIO_InitStructure;// 打开 ADC IO端口时钟ADC_GPIO_AHBxClock_FUN ( ADC_GPIO_C…

《Zookeeper》源码分析(七)之 NIOServerCnxn的工作原理

目录 NIOServerCnxnreadPayload()handleWrite(k)process() NIOServerCnxn 在上一节IOWorkRequest的doWork()方法中提到会将IO就绪的key通过handleIO()方法提交给NIOServerCnxn处理&#xff0c;一个NIOServerCnxn代表客户端与服务端的一个连接&#xff0c;它用于处理两者之间的…