[题目描述]
小理是个画家,他希望有一天他的画能让心仪的她看到。
只是后来她有了他,他却只有他的画,他望着他的画,默默的发呆。
可惜做题的你,画不出他画的她,所以,我们只好画点简单的画,或许有一天,你就会遇到画里她/他吗?
因此我们规定画画的内容:输入一个正整数 n(n为奇数),输出高度为 n 的菱形,例如 n=5 时,输出
*
***
*****
***
*
输入格式:
输入共 T+1 行。
第一行输入一个整数 T ,代表有 T 组测试数据。
每组数据占 1 行,包括一个整数 n。
输出格式:
对于每组数据,输出对应的图形,每行行末不要有空格。
样例输入
2
1
3
样例输出
*
*
* * *
*
数据范围:
对于 100% 的数据,保证 1≤n≤49,且 n 为奇数
来源/分类(难度系数:一星)
完整代码展示:
# coding=utf-8
l=int(input())
m=[]
for i in range(l):
n=int(input())
m.append(n)
for j in range(0,len(m)):
a=m[j]
space=' '
b=int((a+1)/2-1)
c=1
d=0
e="*"
while d<(a+1)/2:
print("{}{}".format(space*b,e*c))
c+=2
b-=1
d+=1
f=1
g=a-2
h=0
while h<(a-1)/2:
print("{}{}".format(space*f,e*g))
f+=1
g-=2
h+=1
代码解释:
“l=int(input())
m=[]
for i in range(l):
n=int(input())
m.append(n) ”,让用户输入需要测试的数据组数。建立一个空列表m,让用户输入每组需要测试的数据n,并将其存入列表m中,循环l次。
“for j in range(0,len(m)):
a=m[j]
space=' '
b=int((a+1)/2-1)
c=1
d=0
e="*"
while d<(a+1)/2:
print("{}{}".format(space*b,e*c))
c+=2
b-=1
d+=1
f=1
g=a-2
h=0
while h<(a-1)/2:
print("{}{}".format(space*f,e*g))
f+=1
g-=2
h+=1 ”,依次遍历列表m中所有元素,令a=m[j],space=” ”,为一个空格,同时令b=int((a+1)/2-1),c=1,d=0,e=”*”。当d<(a+1)/2,打印b个space,c个e,两者之间没有空格;每打印一次,就让c加2,b减1,d加1,直至d等于(a+1)/2,跳出该while循环(此处while循环用于绘制上下金字塔的上半部分)。令f等于1,g等于a-2,h等于0,当h<(a-1)/2时,打印f个space,g个e,两者之间同样没有空格;每打印一次,就让f加1,g减2,h加1,直至h等于(a-1)/2,,跳出该while循环(此处while循环用于绘制上下金字塔的下半部分)。直至遍历完列表m中所有元素,循环结束。
(本题解题核心:二次循环的运用,循环与规侓的认识理解)
运行效果展示:
(声明:以上内容均为原创)