打印沙漏——中国慕课——数据结构课程—— 自测第一题

要说的全在代码里面了,很详细,应该能看懂额

'''中国慕课——数据结构课程—— 自测第一题打印沙漏
	思路:现将输入的数字和字符分开放到两个变量中;
	利用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))



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值