第三课练习 decorator装饰器练习 1 制作一个函数用来输出输入数值内的全部回文数,并计算回文数个数。(例:121、36463、2552等) 2 利用装饰器来添加计算回文数所用时间并输出结果。

第三课练习 decorator装饰器练习
1 制作一个函数用来输出输入数值内的全部回文数,并计算回文数个数。(例:121、36463、2552等)
2 利用装饰器来添加计算回文数所用时间并输出结果。

引用 皆我百晓生 小程序回复内容作答:

1. 制作一个函数用来输出输入数值内的全部回文数,并计算回文数个数。

def is_palindrome(num):
    """
    判断一个数字是否为回文数的函数
    """
    s = str(num)
    return s == s[::-1]

def find_palindromes(start, end):
    """
    输出指定范围内的全部回文数,并计算回文数个数
    """
    count = 0
    for num in range(start, end+1):
        if is_palindrome(num):
            print(num)
            count += 1
    print("回文数个数:", count)

# 测试
find_palindromes(100, 200)

输出:

101
111
121
131
141
151
161
171
181
191
回文数个数: 10

2. 利用装饰器来添加计算回文数所用时间并输出结果。

import time

def calculate_time(func):
    """
    计算函数执行时间的装饰器
    """
    def wrapper(*args, **kwargs):
        start_time = time.time()
        result = func(*args, **kwargs)
        end_time = time.time()
        print("函数执行时间:", end_time - start_time)
        return result
    return wrapper

@calculate_time
def find_palindromes(start, end):
    """
    输出指定范围内的全部回文数,并计算回文数个数
    """
    count = 0
    for num in range(start, end+1):
        if is_palindrome(num):
            print(num)
            count += 1
    print("回文数个数:", count)

# 测试
find_palindromes(100, 200)

输出:

101
111
121
131
141
151
161
171
181
191
回文数个数: 10
函数执行时间: 0.0006837844848632812

【以下回答由 GPT 生成】

问题标题: 制作一个函数用来输出输入数值内的全部回文数,并计算回文数个数。利用装饰器来添加计算回文数所用时间并输出结果.

问题内容: 在Python中,我想要制作一个函数,该函数能够接受一个数值作为输入,并输出该数值范围内的所有回文数。同时,我希望计算回文数的个数,并通过使用装饰器来添加计算所用时间并将结果输出。

例如,如果我输入一个数值范围为1到100的整数,函数应该输出1到100之间的所有回文数,并告诉我总共有多少个回文数。另外,使用装饰器来计算该过程所用的时间,并将结果输出。

以下是解决该问题的具体步骤和代码示例:

  1. 首先,我们需要编写一个判断一个数是否为回文数的函数。可以通过将数字转换为字符串,然后比较字符串与其翻转后的字符串是否相同来实现。代码如下:
def is_palindrome(num):
    num_str = str(num)
    return num_str == num_str[::-1]
  1. 接下来,我们定义一个装饰器函数,用于计算函数执行时间并将结果输出。可以使用time模块中的time函数来记录函数开始和结束的时间,并计算执行时间差。代码如下:
import time

def calculate_execution_time(func):
    def wrapper(*args, **kwargs):
        start_time = time.time()
        result = func(*args, **kwargs)
        end_time = time.time()
        execution_time = end_time - start_time
        print(f"Execution time: {execution_time} seconds")
        return result
    return wrapper
  1. 现在,我们可以编写主函数来实现题目要求的功能。该函数接受一个数值范围作为参数,利用循环遍历该范围内的所有数字,并使用之前定义的is_palindrome函数判断是否为回文数。同时,用一个计数器来计算回文数的个数。代码如下:
@calculate_execution_time
def find_palindromes(start, end):
    count = 0
    palindromes = []
    for num in range(start, end+1):
        if is_palindrome(num):
            count += 1
            palindromes.append(num)
    print(f"Total number of palindromes: {count}")
    print(palindromes)

# 调用函数并传入范围参数
find_palindromes(1, 100)

这样,当你调用find_palindromes(1, 100)时,函数将输出1到100之间的所有回文数,并显示回文数的个数和计算过程所用的时间。

注意:以上代码示例只是解决问题的一种方式,你可以根据实际需求进行修改和优化。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^