24、数学家斯里尼瓦瑟·拉马努金发现了一个无穷级数,可用于生成 1/π 的数值近似值:1/π = (2√2 / 9801) * ∑((4k)!(1103 + 26390k) / ((k!)^4 * 396^(4k))) ,其中 k 从 0 到 ∞。编写一个名为 estimate_pi 的函数,使用此公式计算并返回 π 的近似值。该函数应使用 while 循环来计算级数的各项,直到最后一项小于 1e - 15(即 10 的 - 15 次方)。你可以通过将结果与 math.pi 进行比较来验证结果。
以下是实现 estimate_pi 函数的 Python 代码:
import math
def estimate_pi():
total = 0
k = 0
factor = 2 * math.sqrt(2) / 9801
while True:
num = math.factorial(4 * k) * (1103 + 26390 * k)
den = math.factorial(k) ** 4 * 396 ** (4 * k)
term = factor * num / den
total += term
if abs(term) < 1e-15:
break
k += 1
return 1 / total
25、字符串切片可以使用第三个索引来指定“步长”,即连续字符之间的间隔数。步长为2表示每隔一个字符取一个;步长为3表示每隔两个字符取一个,依此类推。步长为 -1 表示反向遍历字符串,因此切片 [::-1] 会生成一个反转的字符串。编写一个单行版本的函数来判断一个字符串是否为回文串。
单行版本的实现为: is_palindrome = lambda s: s == s[::-1]
26、以下函数都旨在检查字符串是否包含任何小写字母,但至少有一些是错误的。对于每个函数,描述该函数实际的功能(假设参数是一个字符串)。函数如下:def any_lowercase1(s): for c in s: if c.islower(): return True else: return False def any_lowercase2(s): for c in s: if ‘c’.islower(): return ‘True’ else: return ‘False’ def any_lowercase3(s): for c in s: flag = c.islower() return flag def any_lowercase4(s): flag = False for c in s: flag = flag or c.islower() return flag def any_lowercase5(s): for c in s: if not c.islower(): return False return True
-
any_lowercase1:检查字符串的第一个字符是否为小写字母,若是则返回True,否则返回False。 -
any_lowercase2:由于比较的是字符'c'是否为小写,而'c'总是小写,所以该函数总是返回字符串'True'。 -
any_lowercase3:检查字符串的第一个字符是否为小写字母,返回该字符是否为小写的布尔值。 -
any_lowercase4:检查字符串中是否有小写字母,若有则返回True,否则返回False。 -
any_lowercase5:检查字符串中的所有字符是否都是小写字母,若是则返回True,否则返回False。
27、ROT13是一种弱加密形式,它将单词中的每个字母“旋转”13位。旋转一个字母意味着将其在字母表中移动,如果必要的话再回到字母表开头,例如字母“A”移动3位是“D”,字母“Z”移动1位是“A”。编写一个名为rotate_word的函数,该函数接受一个字符串和一个整数作为参数,并返回一个新字符串,该字符串包含原字符串中的字母按给定数量“旋转”后的结果。例如,“cheer”旋转7位是“jolly”,“melon”旋转 - 10位是“cubed”。你可能需要使用内置函数ord(将字符转换为数字编码)和chr(将数字编码转换为字符)。
以下是将给定文本内容调整为 Markdown 格式的结果:
可按以下步骤编写 rotate_word 函数:
1. 遍历字符串中的每个字符;
2. 使用 ord 函数将字符转换为数字编码;
3. 根据旋转的位数移动该数字编码;
4. 处理超出字母表范围的情况;
5. 使用 chr 函数将移动后的数字编码转换回字符;
6. 拼接所有旋转后的字符形成新字符串。
示例代码如下:
def rotate_word(s, n):
result = ''
for c in s:
if c.isalpha():
start = ord('A') if c.isupper() else o

最低0.47元/天 解锁文章
6278

被折叠的 条评论
为什么被折叠?



