使用python打印出菱形:
*
***
*****
*******
*****
***
*
思想:平常我写这种代码的时候,总是自然地使用二层循环,今天老师教了一个特别好的方法,化二维为一维。我觉得代码优化是很重要的,所以把它写下来,可以慢慢培养自己的算法思想。
第一行 空格3 *1 (即*个数为7-3*2)
第二行 空格2 *3 (即*个数为7-2*2)
第三行 空格1 *5 (即*个数为7-1*2)
第四行 空格0 *7
第五行 空格1 *5
第六行 空格2 *3
第七行 空格3 *1
嘻嘻嘻,找规律吧。空格个数可以用range(-n/2,n/2+1)表示,*的个数可以用(n-空格个数*2)表示,这样就可以用一维表示法来输出菱形。代码如下:
n=int(input("input n"))
for i in range(-int(n/2),int(n/2)+1):
print(" "*abs(i),"*"*abs(n-abs(i)*2))
结果截图: