【测开面试题-001】python控制台打印各种三角形
第01种三角形:
""" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * """ def pr(n): for i in range(n): for k in range(n - i): print(" ", end=" ") for j in range(2 * i + 1): print("*", end=" ") print(
理下一思路,为什么这么实现。
当输入正整数n之后,打印出n行,并且第1行的第n个位置是*,第2行是3个*……最后一行(第n行)是(2n-1)个*。
第1次循环:第1行,打印5个空格,+1个*;
第2次循环:第2行,打印4个空行,+ (2*2-1)个*;
第3次循环:第3行,打印3个空行,+ (2*3-1)个*;
……
第n次循环:第n行,打印0个空行,+ (2*n-1)个*。
所以最外层循环是基于n,也就是 for i in range(n);
然后每一行都由两段拼接而成,先是空格的个数,也就是(n-i)个;然后是*的个数,也就是(2*i + 1)个。
python 的print()是默认换行打印的,想要不换行打印,需要换成:print("", end= "")来实现。
第02种三角形:
是上一种三角形的变形,每行不打印偶数位置的*,只打印奇数位置的*。
所以在最内层什么时候打印*的位置加了一层if...else...判断,(i+1)能被2整除,不打印*,否则打印*。
""" * * * * * * * * * * * * * * * * * * * * * """ def pr(n): for i in range(n): for k in range(n - i): print(" ", end=" ") for j in range(2 * i + 1): if ((j+1) % 2) == 0: print(" ", end=" ") else: print("*", end=" ") print()
第03种三角形:
""" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * """ def pr(n): for i in range(n): for k in range(n - i): print(" ", end=" ") for j in range(2 * i + 1): print("*", end=" ") print() for i in range(n-1): for k in range(i+2): print(" ", end=" ") for m in range(9 - 2*i): print("*", end=" ") print() if __name__ == '__main__': pr(6)
---------------------------------------------------
立足软件测试领域,并重新定义测试!
---------------------------------------------------