跳到主要内容 Python 编程练习题 171-180 | 极客日志
Python 算法
Python 编程练习题 171-180 本文包含 10 道 Python 编程练习题(171-180),涵盖可迭代对象检查、几何级数求和、迭代器判断、字典类型验证与查找、集合推荐算法、字符串去重统计、进制转换计数、异或运算、NumPy 数组维数检测及特殊符号转义等功能。每道题提供问题描述与待补全的代码框架,旨在巩固 Python 基础语法与常用库的使用。
星落 发布于 2026/3/29 更新于 2026/4/13 1 浏览171. 函数 main() 接收两个可迭代对象 iterable1 和 iterable2 作为参数,要求检查是否 iterable1 中的所有元素都是 iterable2 的元素,如果是就返回 True,否则返回 False。如果参数 iterable1 或 iterable2 不是可迭代对象,返回字符串'参数必须为可迭代对象。'。
请补全以下代码实现功能:
def main (iterable1, iterable2 ):
:
(iterable1)
(iterable2)
:
i iterable1:
i iterable2:
try
iter
iter
except
return
'参数必须为可迭代对象。'
for
in
if
not
in
return
False
return
True
172. 阿凡提与国王比赛下棋,国王说要是自己输了的话阿凡提想要什么他都可以给。阿凡提说那就要点米吧,棋盘上一共 n 个小格子,在第一个格子里放 1 粒米,第二个格子里放 2 粒米,第三个格子里放 4 粒米,第四个格子里放 8 粒米,以此类推,后面每个格子里的米都是前一个格子里的 2 倍,一直把 n 个格子都放满。问一共需要多少粒米。函数 main() 接收一个正整数参数 n 表示棋盘上小格子的数量,要求返回按照上面方法放满所有小格子需要的米的粒数。例如,main(3) 返回 7,main(7) 返回 127。请补全以下代码实现功能。不能导入任何模块,不能循环结构和任何形式的推导式。 def main (n ):
return 2 **n - 1
173. 函数 main() 接收一个任意类型参数 obj,检查其是否为迭代器对象,是则返回 True,否则返回 False。所谓迭代器对象,是指同时具有特殊方法 iter() 和 next() 的对象,例如生成器对象、map 对象、enumerate 对象、zip 对象等都是迭代器对象。例如,main(enumerate('python')) 返回 True。 def main (obj ):
return hasattr (obj, '__iter__' ) and hasattr (obj, '__next__' )
174. 函数 main() 接收一个参数 obj,如果参数 obj 不是字典就返回字符串'参数必须是字典。'如果 obj 是字典但是所有元素'值'的类型不一样就返回字符串'字典的值必须是同一种类型。',如果 obj 是字典并且所有元素'值'的类型一样就返回'值'最大的元素的'键'。例如 main({'a':3, 'b':5, 'c':9}) 返回'c'。 def main (obj ):
if type (obj) != dict :
return '参数必须是字典。'
if len (list (set (map (type , obj.values())))) != 1 :
return '字典的值必须是同一种类型。'
return max (obj, key=obj.get)
175. 函数 main() 接收一个字典 data 和一个集合 user 作为参数,参数 data 的每个元素的'键'是表示人名的字符串,每个元素的'值'是包含这个人看过并且喜欢的电影名称字符串的集合,参数 user 是包含某个人看过并且喜欢的电影名称字符串的集合。现在要求根据 data 的数据对 user 做推荐,也就是从 data 中找出一个和 user 不一样但是最像 (看过的电影不完全一样,但是共同看过的电影数量比其他人多) 的那个人,然后从那个人看过并且喜欢的电影名称中找出 UNICODE 编码最小的电影名称推荐给用户 user。要求函数 main() 返回一个 2 元组,其中第一个元素是与 user 不一样但是最像的人名字符串 (也就是 data 中某个元素的键),第二个元素是按照上面描述的算法推荐的电影名称字符串。 def main (data, user ):
ret = {}
for key in data:
ret[key] = ret.get(key, len (data[key] & user))
ls = list (ret.items())
ls.sort(key=lambda x: x[1 ], reverse=True )
film = list (data[ls[0 ][0 ]] ^ user)
film.sort()
return ls[0 ][0 ], film[0 ]
176. 函数 main() 接收一个包含若干字符串的列表参数 comments,要求返回其中重复字数小于一半 (也就是去除重复字之后还剩下原来字数的一半多) 的字符串组成的新列表。例如 main(['好好好好好好', '优质教材编写质量很高', '好书啊好书啊']) 返回 ['优质教材编写质量很高']。 def main (comments ):
ret = []
for i in comments:
if len (i) < 2 * len (set (i)):
ret.append(i)
return ret
177. 函数 main() 接收一个十进制整数 num 作为参数,要求返回 num 的八进制形式中 6 的个数。例如 main(104719078) 返回 3,因为十进制数 104719078 的八进制形式为 00617361346,其中包含 3 个 6。 def main (num ):
return oct (num).count('6' )
178. 函数 main() 接收一个包含若干正整数的元组 integers 和一个正整数 key 作为参数,要求计算元组 integers 中每个正整数和正整数 key 进行异或运算之后结果组成的新元组。例如 main((1235, 86723, 9823), 33891) 返回 (32944, 120480, 41532)。 def main (integers, key ):
return tuple (map (lambda x: x ^ key, integers))
179. 函数 main() 接收一个 numpy 数组 arr 作为参数,要求返回数组 arr 的维数,如果是一维数组就返回 1,如果是二维数组就返回 2,如果是三维数组就返回 3,以此类推。 import numpy as np
def main (arr ):
return arr.ndim
180. 函数 main() 接收一个字符串参数 s,要求把其中的特殊符号替换为 HTML 实体,返回处理后的新字符串。 例如 main('© 版权所有:示例作者 ') 返回'© 版权所有:示例作者 ',
再例如 main('∠∅Δ♣∀') 返回'∠∅δ♣∀'。
def main (s ):
adict = {'<' : '<' , '>' : '>' , '©' : '©' , '∠' : '∠' , '∅' : '∅' , 'δ' : 'δ' , '♣' : '♣' , '∀' : '∀' }
return '' .join([adict.get(a, a) for a in s])
微信扫一扫,关注极客日志 微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
相关免费在线工具 加密/解密文本 使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
curl 转代码 解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
Base64 字符串编码/解码 将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
Base64 文件转换器 将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
Markdown 转 HTML 将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML 转 Markdown 互为补充。 在线工具,Markdown 转 HTML在线工具,online
HTML 转 Markdown 将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML 转 Markdown在线工具,online