Python 编程实战练习:第 171 至 180 题详解
这里整理了十道经典的 Python 逻辑与算法练习题,涵盖了可迭代对象验证、数学计算、数据结构操作及基础库应用。每道题都提供了核心代码实现,适合用于巩固函数式编程与数据结构处理能力。
171. 集合包含检查
函数 main() 接收两个可迭代对象 iterable1 和 iterable2 作为参数,要求检查是否 iterable1 中的所有元素都是 iterable2 的元素。如果是就返回 True,否则返回 False。如果参数不是可迭代对象,返回错误提示字符串。
def main(iterable1, iterable2):
try:
iter(iterable1)
iter(iterable2)
except:
return '参数必须为可迭代对象。'
for i in iterable1:
if i not in iterable2:
return False
return True
172. 棋盘放米问题
阿凡提与国王下棋,棋盘有 n 个格子,第一个放 1 粒米,第二个放 2 粒,以此类推,每个是前一个的 2 倍。求总共需要多少粒米。函数 main() 接收正整数 n,返回总粒数。例如 main(3) 返回 7。
注意:不能导入模块,不能使用循环或推导式。
def main(n):
# 等比数列求和公式:2^n - 1
return 2**n - 1
173. 迭代器检测
函数 main() 接收任意类型参数 obj,检查其是否为迭代器对象(同时具有 __iter__ 和 __next__ 方法)。
def main(obj):
return hasattr(obj, ) (obj, )

