当前位置: 首页 > 知识库问答 >
问题:

Python中的重复三角形模式

农均
2023-03-14

根据输入的整数,我需要制作一个三角形的三角形模式*

    *
   ***
 *  *  *
*********
            *
           ***
          *****
       *    *    *
      ***  ***  ***
     ***************
  *    *    *    *    *
 ***  ***  ***  ***  ***
*************************
rows = int(input())

for i in range(rows):
        for j in range(i, rows):
                print(" ", end = "")
        for j in range(i):
                print("*", end = "")
        for j in range(i + 1):
                print("*", end = "")
        print()

共有1个答案

毋城
2023-03-14

这个答案涉及了很多数学知识,但我希望你能理解它背后的机制。

n = int(input("n = "))

rows = n ** 2
base = n * 2 - 1

for line in range(rows):
    triangle = line // n
    level = (line - triangle * n) % rows

    a_spaces = " " * (n - triangle - 1) * base
    b_spaces = " " * (n - level - 1)

    line = (a_spaces + b_spaces + ("*" * (level * 2 + 1) + b_spaces * 2)
        * (triangle * 2 + 1)).rstrip()

    print(line)

这种方法一次打印出所有内容,只需要O(n)时间复杂度。但作为回报,乍一看似乎有点吓人。在下面的解释中,我将分解这个答案的组成部分,这些变量的含义,以及它们是如何工作的。

第一个变量是rows,即输出中的行数。我们可以注意到这样的模式,即行数等于n的平方。

for line in range(rows):
    triangle = line // n
    level = (line - triangle * n) % rows

    print(triangle, level)
a_spaces = " " * (n - triangle - 1) * base
b_spaces = " " * (n - level - 1)

把所有的东西放在一起,我们得到一行,右剥离,并打印出来。

line = (a_spaces + b_spaces + ("*" * (level * 2 + 1) + b_spaces * 2)
        * (triangle * 2 + 1)).rstrip()

print(line)

让我们用几个测试用例来尝试一下。

*
    *
   ***
 *  *  *
*********
            *
           ***
          *****
       *    *    *
      ***  ***  ***
     ***************
  *    *    *    *    *
 ***  ***  ***  ***  ***
*************************
                        *
                       ***
                      *****
                     *******
                 *      *      *
                ***    ***    ***
               *****  *****  *****
              *********************
          *      *      *      *      *
         ***    ***    ***    ***    ***
        *****  *****  *****  *****  *****
       ***********************************
   *      *      *      *      *      *      *
  ***    ***    ***    ***    ***    ***    ***
 *****  *****  *****  *****  *****  *****  *****
*************************************************
 类似资料:
  • 问题内容: 作为Python的学习经验,我正在尝试编写自己的Pascal三角形版本。我花了几个小时(因为我刚刚开始),但是我得到了以下代码: 哪个返回 但是,我不知道从这里去哪里。几个小时我一直在撞墙。我想强调,我不希望你为我做这件事;朝正确的方向推动我。作为清单,我的代码返回 谢谢。 编辑:我采取了一些好的建议,并且我完全重写了我的代码,但是现在我遇到了另一个问题。这是我的代码。 但是,我发现输

  • 当我从这些三角形中执行α形状时,我无法得到点集的边界。所以我认为我应该使用约束Delaunay三角测量。我选择三角形库来执行此操作。但麻烦的是,我不知道给函数triangle.triangulate(tri, opts=")提供什么。我把我所有的点集输入字典,但它返回我的点集。所以任何人都可以帮助我使用这个功能或另一种选择来执行轮廓检测?谢啦

  • 本文向大家介绍python 打印直角三角形,等边三角形,菱形,正方形的代码,包括了python 打印直角三角形,等边三角形,菱形,正方形的代码的使用技巧和注意事项,需要的朋友参考一下 三角形 等腰直角三角形1 2.7 python:打印直角三角形 coding=utf-8 方式一 方式二 #打印实心等边三角形 #打印菱形 #实心正方形 #空心正方形 知识点说明: python ,end=''备注

  • 本文向大家介绍Python中最大的周长三角形,包括了Python中最大的周长三角形的使用技巧和注意事项,需要的朋友参考一下 假设我们有一个正长度的数组A,我们必须找到面积为非零的三角形的最大周长,该三角形由这些长度中的3个组成。当不可能形成任何非零区域的三角形时,则返回0。 因此,如果输入类似于[3,6,2,3],则输出将为8。 为了解决这个问题,我们将遵循以下步骤- 排序列表A a:=从A删除最

  • 所以我得到了这个目标:我想让用户输入三角形的线数。然后我想打印三角形只使用3个字母:a、b、C。 我试过这段代码: 但这不起作用,任何向导?

  • Python3 实例 以下实例为通过用户输入三角形三边长度,并计算三角形的面积: 实例(Python 3.0+)# -*- coding: UTF-8 -*- # Filename : test.py # author by : www.runoob.com a = float(input('输入三角形第一边长: ')) b = float(input('输入三角形第二边长: ')) c = fl