藍橋杯之字母圖形(Python)實現

藍橋杯之字母圖形(Python)實現

題目

利用字母可以組成一些美麗的圖形,下面給出了一個例子:

ABCDEFG

BABCDEF

CBABCDE

DCBABCD

EDCBABC

這是一個5行7列的圖形,請找出這個圖形的規律,並輸出一個n行m列的圖形。

輸入格式

輸入一行,包含兩個整數n和m,分別表示你要輸出的圖形的行數的列數。

輸出格式

輸出n行,每個m個字符,爲你的圖形。

樣例輸入

5 7

代碼

import string
loop = input().split()
loop = [int(i) for i in loop]
n1 = loop[0]
n2= n3 = loop[1]
letter = list(string.ascii_uppercase)
if n1 <= n2:
    for a in range(loop[0]):
        points = a
        if a ==0:
            for b in range(0, n2):
                print(letter[b],end='')
        else:
            print(letter[a],end='')
            if points == 1:
                for b in range(0,n2):
                    print(letter[b],end='')
            else:
                while True:
                    if points == 0:
                        break
                    else:
                        print(letter[points-1],end='')
                        points -=1

                for b in range(1,n2):

                    print(letter[b],end='')
        n2-=1 
        print()
else:
    for a in range(loop[0]):
            points = a
            if a == 0:
                for b in range(0, n2):
                    print(letter[b], end='')
            else:
                print(letter[a], end='')
                if points == 1:
                    for b in range(0, n2):
                        print(letter[b], end='')
                else:
                    n = 0
                    while True:
                        if points == 0:
                            break
                        else:
                            n+=1
                            if n >= n3:
                                break
                            print(letter[points - 1], end='')
                            points -= 1

                    for b in range(1, n2):
                        if n >= n3:
                            break
                        print(letter[b], end='')
                        n+=1
            n2 -= 1
            print()

分析(這個不能直接複製到藍橋的測試系統上,因爲有其它註釋啥的會直接錯誤)

import string
loop = input().split()
loop = [int(i) for i in loop]
n1 = loop[0]
n2= n3 = loop[1] # n3相當是一堵牆,是用來控制輸出的列數的
letter = list(string.ascii_uppercase) # 這個裏面自動包含了從A到Z所有的字母,沒有必要手打或者用ASCII碼。
if n1 <= n2:# 我們發現,當行數小於或等於列數的時候,輸出出來的正好是我們所想的結果,因爲列數程序可自行控制。
    for a in range(loop[0]): # 大循環控制行數
        points = a# 列指針
        if a ==0:
            for b in range(0, n2):
                print(letter[b],end='')
        else:
            print(letter[a],end='')
            if points == 1:
                for b in range(0,n2):
                    print(letter[b],end='')
            else:
                while True:
                    if points == 0:# 當指針指到A的時候,停止循環。不打印。
                        break
                    else:
                        print(letter[points-1],end='')
                        points -=1 # 指針退位

                for b in range(1,n2):# 打印剩下的部分
                    print(letter[b],end='')
        n2-=1 # 控制從A開始打印的字母數量。
        print()
else:# 當行數大於列數的時候,其它思路是不變的,但,此時,n3這堵牆就派上用場了。
    for a in range(loop[0]):
            points = a
            if a == 0:
                for b in range(0, n2):
                    print(letter[b], end='')
            else:
                print(letter[a], end='')
                if points == 1:
                    for b in range(0, n2):
                        print(letter[b], end='')
                else:
                    n = 0 # 列數控制指針
                    while True:
                        if points == 0:
                            break
                        else:
                            n+=1
                            if n >= n3:# 當列數控制指針的大小和列數相等的時候跳出循環
                                break
                            print(letter[points - 1], end='')
                            points -= 1

                    for b in range(1, n2):
                        if n >= n3:# 此時,這個也是一樣,當列數控制指針的大小和列數相等的時候跳出循環
                            break
                        print(letter[b], end='')
                        n+=1
            n2 -= 1
            print()

還有一個博主代碼很簡潔,思路也很清晰,如果我的看不懂可以看看他的:https://blog.csdn.net/qq_40730150/article/details/104536839?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章