第三课练习 decorator装饰器练习
1 制作一个函数用来输出输入数值内的全部回文数,并计算回文数个数。(例:121、36463、2552等)
2 利用装饰器来添加计算回文数所用时间并输出结果。
引用 皆我百晓生 小程序回复内容作答:
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
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之间的所有回文数,并告诉我总共有多少个回文数。另外,使用装饰器来计算该过程所用的时间,并将结果输出。
以下是解决该问题的具体步骤和代码示例:
def is_palindrome(num):
num_str = str(num)
return num_str == num_str[::-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
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之间的所有回文数,并显示回文数的个数和计算过程所用的时间。
注意:以上代码示例只是解决问题的一种方式,你可以根据实际需求进行修改和优化。