天天看點

PAT~乙級~1027 列印沙漏 ~python

題目描述:

本題要求你寫個程式把給定的符号列印成沙漏的形狀。例如給定17個“*”,要求按下列格式列印

*****
 ***
  *
 ***
*****
           

所謂“沙漏形狀”,是指每行輸出奇數個符号;各行符号中心對齊;相鄰兩行符号數差2;符号數先從大到小順序遞減到1,再從小到大順序遞增;首尾符号數相等。

給定任意N個符号,不一定能正好組成一個沙漏。要求列印出的沙漏能用掉盡可能多的符号。

輸入格式:

輸入在一行給出1個正整數N(≤1000)和一個符号,中間以空格分隔。

輸出格式:

首先列印出由給定符号組成的最大的沙漏形狀,最後在一行中輸出剩下沒用掉的符号數。

輸入樣例:

19 *
           

輸出樣例:

*****
 ***
  *
 ***
*****
2
           

----------------------------------------------------------答題區----------------------------------------------------------

有個坑點,列印出的沙漏的右邊是沒有空格的。

import math
s=input().split()
total=int(s[0])
flag=s[1]
total_yuan=total
total+=1
total//=2
s=math.floor(math.sqrt(total))
sheng=s
s=s*2-1
sheng=(total_yuan-2*sheng**2+1)
n=0
while(s>1):
    print(" "*n+flag*s)
    n+=1
    s-=2

print(" "*n+flag*s)

while(n>0):
    n-=1
    s+=2
    print(" "*n+flag*s)

print(sheng)
           

維護了一個PAT測試點問題的共享文檔,歡迎大家把遇到的問題寫在上面。

一起寫文檔:https://yiqixie.com/d/home/fcACe6xZ2aroPxFQrQZ05Cw32

github連結:https://github.com/Makerdd/PAT-yiji​​​​​​​