练习题
获取杨辉三角
创建函数,生成指定行数的杨辉三角。
杨辉三角:
每行端点与结尾的数为1,每个数是它左上方和右上方的数的和
输入:6
输出: [
[1],
[1, 1],
[1, 2, 1],
[1, 3, 3, 1],
[1, 4, 6, 4, 1],
[1, 5, 10, 10, 5, 1]
]
```python
def get_yang_hui_triangle(row_count):# 6
"""
获取杨辉三角
:param row_count: int类型,行数
:return: list类型,杨辉三角
"""
triangle = []
for row_index in range(row_count):# 0 1 2 3 .. 5
# 创建行
row = [None] * (row_index + 1)
# 设置首尾
row[0], row[-1] = 1, 1
# 设置中间(从第三行开始)
for i in range(1, 2):#1
# 当前元素 = 上一行
row[i] = triangle[row_index - 1][i - 1] + triangle[row_index - 1][i]
triangle.append(row)
return triangle
print(get_yang_hui_triangle(6))
水仙花数
"水仙花数":各位数字立方和等于该数本身
定义函数,根据***位数***计算水仙花数
输入:3
输出:[153, 370, 371, 407]
“”"
``
def is_daffodil(number):
"""
判断指定数字是否为水仙花数
:param number: int 类型,表示需要判断的数字
:return: bool 类型,表示是否为水仙花数。
"""
str_number = str(number)
power = len(str_number)
sum_value = 0
for item in str_number:
sum_value += int(item) ** power
return sum_value == number
def get_daffodil(n):
"""
获取指定位数的水仙花数
:param n:int类型,表示整数位数。
:return:列表类型,水仙花数。
"""
# list_list = []
# for i in range(10 ** (n - 1), 10 ** n):
# if is_daffodil(i):
# list_list.append(i)
# return list_list
return [num for num in range(10 ** (n - 1), 10 ** n) if is_daffodil(num)]
print(get_daffodil(3))
“”"
二分查找
定义函数,在有序数字列表中找到目标值,并返回其索引。
如果目标值不在列表中,返回它可以按顺序插入的索引。
输入:[1,2,6,8,9] 8
输出:3
输入:[1,2,6,8,9] 5
输出:2
“”"
def search_insert_index(list_number, target):
left = 0
right = len(list_number) - 1
while left <= right:
mid = (left + right) // 2
if list_number[mid] == target:
return mid
elif list_number[mid] < target:
left = mid + 1
else:
right = mid - 1
return left
print(search_insert_index([1, 2, 6, 8, 9], 5))