电竞比分网-中国电竞赛事及体育赛事平台

分享

Python|等腰三角形

 算法與編程之美 2021-04-13

問題描述

本題目要求你在控制臺輸出一個由數(shù)字組成的等腰三角形。

1. 先用1,2,3,...的自然數(shù)拼一個足夠長的串

2. 用這個串填充三角形的三條邊。從上方頂點開始,逆時針填充。

比如,當(dāng)三角形高度是8時:

       1

      2 1

     3   8

    4     1

   5       7

  6         1

 7           6

891011121314151

要求:空格一律用"."代替。

輸入格式:

一個正整數(shù)n(3<n<300),表示三角形的高度

輸出格式:

用數(shù)字填充的等腰三角形。

輸入樣例:

5

輸出樣例:

....1

...2.1

..3...2

.4.....1

567891011

輸入樣例:

10

輸出樣例:

.........1

........2.2

.......3...2

......4.....2

.....5.......1

....6.........2

...7...........0

..8.............2

.9...............9

1011121314151617181

解決方案

1)確定三角形拼接的范圍:因為三角形是一個自然數(shù)拼接成的串,所以我們先確定不同層數(shù)對應(yīng)到的自然數(shù),觀察兩個案例(從上到左下到右再到上)可知:5層到13,10層到23(均未到最后一個自然數(shù)的最后一個值是因為第一層只有一個自然數(shù))。所以n層則會從1拼接到2n+3

2)每一行第一個數(shù)字前的空格數(shù):觀察題目給出的兩個輸出案例可以發(fā)現(xiàn)每一行第一個數(shù)前面的空格數(shù)為輸出三角形的高(n- 第幾層。

3)每一行的第一個數(shù)剛好和層數(shù)相等。

4)第2到第n層兩個數(shù)之間的空格數(shù):從第二層開始所以有i-2,每一層增加兩個即(i-2* 2,又因起始數(shù)量為1,所以規(guī)律是(i-2* 2 – 1。

5)第2到第n層第二個數(shù)的確定:因為從上到下的第二個數(shù)字是拼接的串的逆序且第一層只有一個數(shù)字,所以第n層的第二個數(shù)字為拼接串的倒數(shù)第n個數(shù)字。

6)最后一層即為拼接串的第n個數(shù)到倒數(shù)第n個數(shù)。

解決代碼

n = int(input())

lis1 = "".join(str(i) for i in range(1, 2 * n + 4))

print("." * (n - 1) + lis1[0])  # 第一層

for i in range(2, n):  # 2n-1

    print("." * (n - i) + lis1[i-1] + "." * ((i - 2) * 2 + 1) + lis1[-i])

print(lis1[n - 1: -n+1])  # 最后一層

運行實例

結(jié)語

本題的關(guān)鍵在于尋找三角形中存在的多個規(guī)律。

主編:歐洋

稿件來源:深度學(xué)習(xí)與文旅應(yīng)用實驗室(DLETA)

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多