以下是一些python 中常见的编程题目
class Animal:
def __init__(self, name):
self.name = name
def speak(self):
pass
class Dog(Animal):
def speak(self):
return f"{self.name} says Woof!"
# 创建对象
my_dog = Dog("Buddy")
print(my_dog.speak())
##### 反转列表 #####
def reverse_list(lst):
return lst[::-1] #步长:-1 表示从后向前逐个元素获取,即逆序遍历。
my_list = [1, 2, 3, 4, 5]
reversed_list = reverse_list(my_list)
print(reversed_list) # 输出: [5, 4, 3, 2, 1]
##### 判断是否是回文 #####
def is_huiwen(s):
return s==s[::-1] #
print(is_huiwen('123321'))
print(is_huiwen('123456'))
#### 字符串中字符出现的次数 ####
def count_chars(s):
result = {}
for char in s:
if char in result:
result[char] += 1 #使用字典来存储字符出现的字数
else:
result[char] = 1
return result
s = "hello world"
print(count_chars(s))
# 输出: {'h': 1, 'e': 1, 'l': 3, 'o': 2, ' ': 1, 'w': 1, 'r': 1, 'd': 1}
##### 斐波那契数列 #####
def fibonacci(n):
fib_list = []
a, b = 0, 1
for _ in range(n): #一种常用的循环的方式,相当于循环n次
fib_list.append(a)
a, b = b, a + b
return fib_list
print(fibonacci(10)) # 输出: [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
##### 最大值 #####
def find_max(lst):
if not lst:
return None # 如果列表为空,返回None
max_value = lst[0]
for num in lst[1:]:
if num > max_value:
max_value = num
return max_value
# 示例用法
my_list = [3, 7, 2, 9, 4]
print(find_max(my_list)) # 输出: 9
##### 合并字典 #####
def merge_dicts(dict1, dict2):
result = dict1.copy() # 先复制第一个字典
for key, value in dict2.items(): # 通过迭代去除字典中的 key value
if key in result: # 会检查字典中是否存在该键
result[key] += value # 键重复则相加
else:
result[key] = value # 不重复则直接添加
return result
# 示例用法
d1 = {'a': 1, 'b': 2, 'c': 3}
d2 = {'b': 3, 'c': 4, 'd': 5}
print(merge_dicts(d1, d2))
# 输出: {'a': 1, 'b': 5, 'c': 7, 'd': 5}
##### 找出列表中的所有偶数 #####
def find_even_numbers(lst):
return [num for num in lst if num % 2 == 0]
# 列表推导式
# [表达式 for 变量 in 可迭代对象 if 条件]
# lst:你要处理的原始列表。
# for num in lst:依次取出列表中的每个元素,赋值给变量 num。
# if num % 2 == 0:判断当前的 num 是否为偶数(即能被2整除)。
# num:如果条件成立,就把这个 num 加入到新列表中。
# 示例用法
my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(find_even_numbers(my_list)) # 输出: [2, 4, 6, 8, 10]
##### 实现二分查找 #####
def binary_search(lst, target):
# 先对列表排序
sorted_lst = sorted(lst)
left, right = 0, len(sorted_lst) - 1
while left <= right:
mid = (left + right) // 2
if sorted_lst[mid] == target:
return mid # 返回的是排序后列表中的索引
elif sorted_lst[mid] < target:
left = mid + 1
else:
right = mid - 1
return -1 # 没找到返回-1
# 示例用法
my_list = [7, 2, 5, 3, 9, 1]
print(binary_search(my_list, 5)) # 输出: 3(排序后[1,2,3,5,7,9],5的索引是3)
print(binary_search(my_list, 8)) # 输出: -1
##### python 中的装饰器 #####
def my_decorator(func):
def wrapper():
print("函数开始执行...")
func()
print("函数执行完毕...")
return wrapper
@my_decorator
def say_hello():
print("函数正在执行...")
say_hello() # 输出: 函数开始执行... 函数正在执行... 函数执行完毕...
##### 使用装饰器实现计数器 #####
import time
def timer(func):
def wrapper(*args, **kwargs):
start_time = time.time() # 记录开始时间
result = func(*args, **kwargs) #任意数量的位置参数,和任意数量关键字参数
end_time = time.time() # 记录结束时间
print(f"{func.__name__} 执行时间: {end_time - start_time:.6f} 秒")
return result
return wrapper
# 示例用法
# example_function() 实现一个数据累加的函数
# 使用装饰器,来查看这个函数的执行时间
@timer
def example_function():
total = 0
for i in range(1000000):
total += i
return total
example_function()
##### 使用生成器 实现 fibonacci 数列 #####
def fibonacci_generator(n):
a, b = 0, 1
for _ in range(n):
yield a #yield 将函数变为一个生成器,每一次 next(func) 或者 for item in func() 都会暂停,并返回 yield 的值
# 这里相当于将 a 的值返回给了 调用者 中的 num
a, b = b, a + b
# 示例用法
for num in fibonacci_generator(10):
print(num, end=' ')
# 输出: 0 1 1 2 3 5 8 13 21 34
print()
gen = fibonacci_generator(3)
print(next(gen)) # 输出 0
print(next(gen)) # 输出 1
print(next(gen)) # 输出 1