题目

杨辉三角

Version 1

def generate_pascal_triangle(n):
    """
    生成n行杨辉三角
    :param n: 行数
    :return: 二维列表表示的杨辉三角
    """
    triangle = []
    for i in range(n):
        row = [1]  # 每行第一个元素总是1
        if i > 0:
            # 中间元素等于上一行相邻两元素之和
            for j in range(1, i):
                row.append(triangle[i-1][j-1] + triangle[i-1][j])
            row.append(1)  # 每行最后一个元素总是1
        triangle.append(row)
    return triangle

def print_triangle(triangle):
    """打印杨辉三角"""
    max_width = len(' '.join(map(str, triangle[-1])))
    for row in triangle:
        print(' '.join(map(str, row)).center(max_width))

if __name__ == '__main__':
    rows = int(input("How many rows:"))
    result = generate_pascal_triangle(rows)
    print_triangle(result)

Version 2

# 杨辉三角


def generate_pascal_triangle(n:int)->list:
    triangle = [] # 初始化一个数组存储三角形

    for row_num in range(n):# 几行

        row = [None] * (row_num + 1) # 全部初始化为None

        row[0],row[-1] = 1,1 # 最前面和最后面都赋值为1

        # row_num >= 2
        for j in range(1,row_num):# 只计算中间元素,所以是1,row_num
            row[j] = triangle[row_num -1][j - 1] + triangle[row_num-1][j]

        triangle.append(row)
    return triangle


def make_beautiful(triangle:list):

    # 计算最后一个数组长度作为三角形的最宽长度
    width = len(" ".join(str(num) for num in triangle[-1]))
    # 居中输出每一行
    for row in triangle:
        print(f"第{len(row)}行",end="\t")
        row_str = " ".join(str(num) for num in row)
        print(row_str.center(width))

make_beautiful(generate_pascal_triangle(int(input("你要输出多少行"))))

99 乘法表

for i in range(1,10):
    for j in range(1,i+1):
        print(f"{i}*{j}={i*j}",end="\t")
    print("\n")

水仙花数

import sys

from numpy.f2py.auxfuncs import throw_error

class StartCannotLessThanZero(Exception):
    pass
def sxh(start:int,end:int)->None:
    if start <= 0:
        raise StartCannotLessThanZero("起始数字不能小于或等于0")
    for num in range(start,end+1):
        digits = [int(num) for num in str(num)] # 将数字转化为数字列表, 123 -> [1,2,3]
        print(digits)
        power = len(str(num)) # 求出数字位数 3
        result = sum(d ** power for d in digits) # 计算结果 1**3+2**3+3**3
        print(result)

        if num == result:
            print(f"{num}是水仙花数")


if __name__ == '__main__':
    print("请输入你想求出的水仙花数的范围")
    start = int(input("start:"))
    end = int(input("end:"))
    sxh(start,end)

9/25

# for i in range(1, 10):
#     for j in range(1, i + 1):
#         print(f"{i}*{j}={i * 9}", end="\t")
#     print("\n")

i = 1
while i <= 9:
    j = 1
    while j <= i:
        print(f"{i}×{j}={i * j}", end="\t")
        j += 1
    i += 1
    print("")
print()
# 倒三角
# 打印99乘法表的倒三角
# for i in range(9, 0, -1):
#     for j in range(1, i + 1):
#         print(f"{j}×{i}={j * i}", end="\t")
#     print()  # 换行

# print("\n")
i = 1
while i <= 9:
    j = i
    while j <= 9:
        print(f"{i}×{j}={j * i}", end="\t")
        j += 1
    i += 1
    print("")

# i = 1
# while i <= 9:
#     j = 1
#     while j <= i:
#         print(i ** "\t", end="")
#         print(f"{i}*{j}={i * j}", end="")
#         # print((9 - 1) * "\t", end="")
#         j += 1
#     i += 1
#     print("\n")

斐波那契数列

Version 1

def finbonaqi(n):
    """
        递归计算第n个斐波那契数

        参数:
            n: 要计算的斐波那契数的位置(从0开始)

        返回:
            第n个斐波那契数

        斐波那契数列定义:
            F(0) = 0
            F(1) = 1
            F(n) = F(n-1) + F(n-2)  (n >= 2)
        """
    if n <= 0:
        return 0
    elif n == 1:
        return 1
    else:
        return finbonaqi(n - 1) + finbonaqi(n - 2)


# 第三个斐波那契数字
# fibonaqi(3)
# finbonaqi(2) + fibonaqi(1)
#     finbonaqi(1) + fibonaqi(0)    # 1
# 0 + 1# 1
# 结果为2


list = []
for i in range(1,21):
    list.append(finbonaqi(i)) # 求出第i个斐波那契数列上的数字

print(list)

Version 2

def fibonaqi(n)->list:
    a, b = 1, 1
    res = [1, 1]
    for i in range(n):
        c=a+b
        res.append(c)
        a,b = b,c
    print(res)

fibonaqi(10)

上课的代码

10/16

#
# list = [int(a) for a in "123456"]
# print(list)
# print(list.index(6))
# list.reverse()
# print(list)
# 语法:列表.index(元素),查找指定元素的下标,如果找不到,报错ValueError
# index就是列表对象(变量)内置的方法(函数)

mylist = ["itcast", "itheima", "python"]

# 1.1 查找某元素在列表中的下标
index = mylist.index("itheima")
print(f"itheima在列表中的下标索引是:{index}")
# 1.2 如果找不到元素,会报错
try:
    print(mylist.index("test"))
except Exception as e:
    print(f"没找到{e}")

# 2. 修改特定下标索引的值
mylist[1] = "黑马传智教育"
print(f"列表修改后的元素值{mylist}")
# 3. 在指定下标位置前面插入新元素
# 插入元素
# 语法:列表.insert(索引,待插入元素)

print("在索引2前面插入heiheihei")
mylist.insert(2, "heiheihei")
mylist.insert(2, [4, 5, 6])
# mylist.insert(len(mylist), 4)
print(f"列表修改后的元素值{mylist}")
# 4. 在列表尾部追加```单个```新元素
mylist.append("单个元素")
print(f"列表修改后的元素值{mylist}")

# 5. 在列表尾部追加```一批```新元素
mylist.append([1, 2, 3])
print(f"列表修改后的元素值{mylist}")

# 追加元素方式2
# 语法:列表.extend(其他数据容器),将其他数据容器
extend_list = ["extend1", "extend2", "extend3"]
mylist.extend(extend_list)  # 直接退添加到最后,
print(f"列表修改后的元素值{mylist}")

# 删除元素

# 语法1 del 列表[下标]
# 语法2 列表.pop(下标)
# 删除单个元素
mylist = ["itheima", "test", "python"]
del mylist[0]
print(f"删除后列表{mylist}")

element = mylist.pop(1)
print(f"删除元素{element},删除后列表{mylist}")

# 7. 删除某元素的第一个匹配项
mylist = [1, 2, 3, 3, 2, 2]
mylist.remove(2)
print(f"删除第一个匹配项后结果{mylist}")

# 8. 清空列表
mylist.clear()
print(f"列表清空后{mylist}")

# 9. 统计列表内元素的数量
mylist = ["itheima", "itheima", "itcast", "itheima", "python"]
count = mylist.count("itheima")
print(f"列表中itheima数量是{count}")

# 10.统计列表内有多少元素
mylist.insert(len(mylist), [1, 2, 3])
print(f"列表{mylist}里面有{len(mylist)}个元素")


nums = [0, 5, 10, 33, 8, 19, 25, 6]
nums.append(2)
print(nums)
nums.insert(2,22)
print(nums)
nums.remove(33)
print(nums)
nums.reverse()
print(nums)
nums.sort()
print(nums)
nums.clear()
print(nums)

# 1.
list = [21, 25, 21, 23, 22, 20]
# 2.
list.append(31)
print(list)
# 3.
new_list = [29, 33, 30]
list.extend(new_list)
print(list)
# 4.
print(list.pop(0))
# 5.a
print(list.pop(-1))
# 6.
print(list.index(31))

算法题网址知乎

posted on 2025-09-19 08:52  suiseiseki  阅读(16)  评论(0)    收藏  举报