要說的全在代碼裏面了,很詳細,應該能看懂額
'''中國慕課——數據結構課程—— 自測第一題打印沙漏
思路:現將輸入的數字和字符分開放到兩個變量中;
利用18 = [5,3,1,3,5]+1 構造出需要的列表;
再利用for循環打印出來
'''
#輸入如 17 * 用空格分割給到a
a = input('').split()
num ,string= int(a[0]),a[1]
#構造list1來裝沙漏的每一行
list1 = [1]
# n 用來記錄當前還剩下多少
n = num-1
# k 沙漏的第一層和第三層是3個
k = 3
while n>0:
n = n -2*k
if n<0:
break
#分別在列表的前面和後面插入要打印的沙漏個數
list1.insert(0,k)
list1.append(k)
k+=2
#for循環打印前一般的沙漏,注意空格
for i in range(0,len(list1)//2+1):
print(' '*i+list1[i]*string)
#將剩下的一半放在列表list2中;並打印
list2 = list1[len(list1)//2+1:]
for j in range(0,len(list2)):
print((len(list2)-j-1)*' '+list2[j]*string)
#打印剩餘的個數
print(num-sum(list1))