给定任意n个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号
# 输入如 17 * 用空格分割给到a
a = '17 *'.split()
a[0] = input('')
a[1] = input('')
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))