程序员文章、书籍推荐和程序员创业信息与资源分享平台

网站首页 > 技术文章 正文

Python入门到脱坑经典案—数字金字塔

hfteth 2025-07-03 15:23:43 技术文章 3 ℃

数字金字塔是Python初学者练习循环和格式化输出的经典案例,可以帮助理解嵌套循环和字符串格式化的使用。下面我将介绍几种不同风格的数字金字塔实现。

方法一:基础数字金字塔


def number_pyramid(n):
    """打印数字金字塔"""
    for i in range(1, n+1):
        # 打印前导空格
        print(" " * (n - i), end="")
        # 打印左半部分数字(升序)
        for j in range(1, i+1):
            print(j, end="")
        # 打印右半部分数字(降序)
        for j in range(i-1, 0, -1):
            print(j, end="")
        print()  # 换行

# 测试
rows = int(input("请输入金字塔行数: "))
number_pyramid(rows)

输出示例(5行):

    1
   121
  12321
 1234321
123454321

方法二:使用字符串格式化

def formatted_pyramid(n):
    """使用字符串格式化打印金字塔"""
    for i in range(1, n+1):
        # 生成左半部分数字字符串
        left = "".join(str(j) for j in range(1, i+1))
        # 生成右半部分数字字符串
        right = "".join(str(j) for j in range(i-1, 0, -1))
        # 组合并居中显示
        print(f"{left+right:^{2*n-1}}")

# 测试
rows = int(input("请输入金字塔行数: "))
formatted_pyramid(rows)

方法三:倒置数字金字塔

def inverted_pyramid(n):
    """打印倒置数字金字塔"""
    for i in range(n, 0, -1):
        print(" " * (n - i), end="")
        for j in range(1, i+1):
            print(j, end="")
        for j in range(i-1, 0, -1):
            print(j, end="")
        print()

# 测试
rows = int(input("请输入金字塔行数: "))
inverted_pyramid(rows)

输出示例(5行):

123454321
 1234321
  12321
   121
    1

方法四:字母金字塔

def alphabet_pyramid(n):
    """打印字母金字塔"""
    for i in range(1, n+1):
        print(" " * (n - i), end="")
        # 打印升序字母
        for j in range(i):
            print(chr(65 + j), end="")
        # 打印降序字母
        for j in range(i-2, -1, -1):
            print(chr(65 + j), end="")
        print()

# 测试
rows = int(input("请输入金字塔行数: "))
alphabet_pyramid(min(rows, 26))  # 限制不超过26行(字母数)

输出示例(5行):

    A
   ABA
  ABCBA
 ABCDCBA
ABCDEDCBA

方法五:自定义填充金字塔

def custom_pyramid(n, char="*"):
    """自定义填充字符的金字塔"""
    for i in range(1, n+1):
        spaces = " " * (n - i)
        pattern = char * (2*i - 1)
        print(f"{spaces}{pattern}")

# 测试
rows = int(input("请输入金字塔行数: "))
symbol = input("请输入填充字符(默认*): ") or "*"
custom_pyramid(rows, symbol)

方法六:数字和字符混合金字塔

def mixed_pyramid(n):
    """数字和字符混合金字塔"""
    for i in range(1, n+1):
        print(" " * (n - i), end="")
        # 数字部分
        for j in range(1, i+1):
            print(j, end="")
        # 字符部分
        for j in range(i-1, 0, -1):
            print(chr(64 + j), end="")
        print()

# 测试
rows = int(input("请输入金字塔行数: "))
mixed_pyramid(rows)

输出示例(5行):

    1
   12A
  123BA
 1234CBA
12345DCBA

方法七:斐波那契金字塔

def fibonacci_pyramid(n):
    """斐波那契数列金字塔"""
    a, b = 0, 1
    fib_numbers = []
    for _ in range(n*(n+1)//2):  # 计算所需斐波那契数
        fib_numbers.append(b)
        a, b = b, a + b
    
    index = 0
    for i in range(1, n+1):
        print(" " * (n - i), end="")
        for _ in range(i):
            print(fib_numbers[index], end=" ")
            index += 1
        print()

# 测试
rows = int(input("请输入金字塔行数: "))
fibonacci_pyramid(rows)

输出示例(5行):

    1 
   1 2 
  3 5 8 
 13 21 34 55 
89 144 233 377 610 

总结

通过这个数字金字塔案例,我们学习了:

  1. 嵌套循环的使用
  2. 字符串格式化和对齐
  3. 数字和字符的转换
  4. 不同金字塔模式的实现
  5. 数学序列在图案中的应用

这些练习可以帮助初学者掌握Python的基本语法和逻辑思维,为进一步学习算法和数据结构打下基础。

Tags:

最近发表
标签列表