Python编程实践:从递归到面向对象

19、编写一个程序,使用递归的方法来判断一个给定的数字是否为质数。以下代码片段展示了程序可能的运行方式:print(‘is_prime(3):’, is_prime(3)) # True print(‘is_prime(7):’, is_prime(7)) # True print(‘is_prime(9):’, is_prime(9)) # False print(‘is_prime(31):’, is_prime(31)) # True

def is_prime(n, divisor=2):
    if n < 2:
        return False
    if divisor * divisor > n:
        return True
    if n % divisor == 0:
        return False
    return is_prime(n, divisor + 1)


print('is_prime(3):', is_prime(3))
print('is_prime(7):', is_prime(7))
print('is_prime(9):', is_prime(9))
print('is_prime(31):', is_prime(31))

在上述代码中,定义了一个递归函数 is_prime 来判断一个数是否为质数。函数接受两个参数, n 是要判断的数, divisor 是当前的除数,初始值为 2。

  • 如果 n 小于 2,直接返回 False
  • 如果 divisor 的平方大于 n ,说明 n 是质数,返回 True
  • 如果 n 能被 divisor 整除,说明 n 不是质数,返回 False
  • 否则,递归调用 is_prime 函数,将 divisor 加 1 继续判断。

最后按要求打印出不同数字的判断结果。

20、编写一个函数,用于生成指定行数的帕斯卡三角形。帕斯卡三角形是由二项式系数组成的三角形。其数值生成规则如下:在第0行(即最顶层行),有一个唯一的非零项1。后续每一行的每个项都是由上一行中其左上方和右上方的数字相加得到的,空白项视为0。例如,第一行(或其他任何行)的第一个数字是1(0和1的和),而第三行的数字1和3相加得到第四行的数字4。例如,你的函数可以命名为pascals_triangle(),以下代码展示了如何使用它:triangle = pascals_triangle(5) for row in triangle: print(row) 其输出可能如下:[1] [1, 1] [1, 2, 1] [1, 3, 3, 1] [1, 4, 6, 4, 1]

以下是实现 pascals_triangle() 函数的Python代码:

def pascals_triangle(n):
    triangle = []
    for i in range(n):
        row = [1] * (i + 1)
        for j in range(1, i):
            row[j] = triangle[i - 1][j - 1] + triangle[i - 1][j]
        triangle.append(row)
    return triangle

# 测试代码
triangle = pascals_triangle(5)
for row in triangle:
    print(row)

这段代码定义了一个名为 pascals_triangle 的函数,它接受一个整数 n 作为参数,表示要生成的帕斯卡三角形的行数。函数内部使用一个循环来逐行构建帕斯卡三角形,对于每一行,先初始化所有元素为1,然后根据帕斯卡三角形的规则计算中间元素的值。最后返回生成的帕斯卡三角形。

21、添加一个选项,对用户输入的两个数字应用取模(%)运算符。这将涉及定义一个合适的函数,并将此选项添加到菜单中。你还需要扩展主计算器控制循环来处理这个选项。

以下是实现该功能的Python代码示例:

class Calculator:
    def add(self, x, y):
        return x + y

    def subtract(self, x, y):
        return x - y

    def multiply(self, x, y):
        return x * y

    def divide(self, x, y):
        if y == 0:
            print('Error: Division by zero')
            return None
        return x / y

    def modulus(self, x, y):
        if y == 0:
            print('Error: Modulus by zero')
            return None
        return x % y


while True:
    print('Menu Options are:')
    print(' 
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值