2021.11.12:进阶模式:打印等腰三角形、菱形、空心菱形

进阶模式:打印等腰三角形、菱形、空心菱形

一、打印等腰三角形

(一)等腰三角形(方法一)

  1. 打印等腰三角形
    在这里插入图片描述
"""
功能:打印字符三角形
作者:zwh
日期:2021年11月12日
"""

rows = int(input('rows = '))  # 输入排数

# 打印三角形(方法1)
for i in range(rows):
    print(' '*(rows-1-i), end='')
    print('* '*(i+1))

  1. 打印倒等腰三角形
    在这里插入图片描述
rows = int(input('rows = '))  # 输入排数

# 打印倒三角形(方法1)
for i in range(rows):
    print(' '*(i), end='')
    print('* '*(rows-i))

(二)等腰三角形(方法二)

  1. 打印等腰三角形
rows = int(input('rows = '))  # 输入排数

# 打印三角形(方法2)
for i in range(0, rows):
    print(' '*(rows-i-1) + '*'*(i+1)+'*'*i)
  1. 打印倒等腰三角形
rows = int(input('rows = '))  # 输入排数

# 打印倒三角形(方法2)
for i in range(0, rows):
    print(' '*(i+1)+'*'*(rows-i)+'*'*(rows-i-1))

二、打印菱形

(一)等腰三角形拼接法

  1. 方法1
    在这里插入图片描述
rows = int(input('rows = '))  # 输入排数

# 打印正三角形
for i in range(rows):
    print(' '*(rows-1-i), end='')
    print('* '*(i+1))

# 打印倒三角形(这个三角形会少一排)
for i in range(rows):
    print(' '*(i+1), end='') # (+1)使这个三角形往右移动一个单位。
    print('* '*(rows-i-1)) # (-1)这里减去了一排符号,若rows=5,则这个三角形只有4排。
  1. 方法2
    在这里插入图片描述
# -*- coding: utf-8 -*-
"""
功能:打印字符菱形
作者:zwh
日期:2021年11月12日
"""

rows = int(input('rows = '))  # 输入排数

# 打印菱形上半部分
for i in range(0, rows):
    print(' '*(rows-i-1) + '*'*(i+1)+'*'*i)

# 打印菱形下半部分
for i in range(0, rows):
    print(' '*(i+1)+'*'*(rows-i-1)+'*'*(rows-i-2)) 
# (-1)和(-2)参照上文的第二种三角形方法和打印菱形时的方法相同,删除一排字符,向右平移一个单位


(二)for循环打印

在这里插入图片描述

# -*- coding: utf-8 -*-
"""
功能:打印菱形
作者:zwh
日期:2021年11月12日
"""

a = int(input("请输入菱形每条边星星的个数:"))

# 打印实心菱形
# 下面a无法同时用在三个地方,所以需要赋值b,c
b = a
c = a
for i in range(1, a + 1):   # 与今天上一个博客打印三角形相似
    print(" " * (a-i+1), "*" * (2 * i - 1))
    b -= 1
    if i == a:  # 分界点,打印倒三角形
        for j in range(1, a):  # 这里a没有+1,是为了承接上面三角形的最后一排
            print(" " * (j+1), "*" * (2*c-3))
            c -= 1

打印空心菱形

在这里插入图片描述

# -*- coding: utf-8 -*-
"""
功能:打印空心菱形
作者:zwh
日期:2021年11月9日
"""

a = int(input("请输入菱形每条边星星的个数:"))

# 打印空心菱形
b = a
c = a
# 打印头顶第一个*
print(' '*(a-1), '*')
# 除去第一个*,从第二排开始打印
for i in range(2, a + 1):
    print(" " * (a-i+1)+'*'+ " " * (2 * i - 3)+'*')
    # (" " * (a-i+1))打印前导空格(递减)
    # 第一个'*'为前导空格后的第一个*
    # (" " * (2 * i - 3))打印中间的空格
    # 最后一个'*'为右边的*
    # 用+链接起来
    b -= 1
    if i == a:  # 分界点,开始打印倒三角
        for j in range(2, a):
        # 这里的2表示这个倒三角形没有上面一排接在了上面的三角形的最后一排下
            print(" " * j + "*" + ' ' * (2*c-5)+'*')
            # 这里的*和’ ‘同上面的三角形
            c -= 1
        print(" " * a + '*')
        # 这里输出最后一个*

猜你喜欢

转载自blog.csdn.net/zl202111/article/details/121285958
今日推荐