智一面的面试题提供python的测试题
使用地址:http://www.gtalent.cn/exam/interview?token=906315a76b5c14231889351088713f76

题目:输出三角形图案
打印出如下图案(菱形):中间*数量分别是1、3、5、7、9,层数由键盘输入 比如输入5  产生如下图形

解法1 常规思维
程序分析

1、我们可以看到每一层的星星数量是层数的2被+1

2、同时我们也可以计算出每一层对应的空格数是总层数-层数-1

代码编写

n = int(input("输入要显示的层数:"))   
for i in range(n):
    print(' ' * (n - i-1), end="")
    for j in range(2 * i+1):
        print('*', end="")
    print()
for i in range(n-1):
    print(' ' * (i+1), end="")
    for j in range(2*(n-(i+1))-1):
        print('*', end="")
    print()
运行结果

 

解法2 stdout类
程序分析和上面类似

代码编写

from sys import stdout
n = int(input("输入要显示的层数:"))
for i in range(n):
    for j in range(n-i-1):
        stdout.write(' ')
    for k in range(2 * i + 1):
        stdout.write('*')
    print('')
for i in range(n-1):
    for j in range(i+1):
        stdout.write(' ')
    for k in range(2*(n-(i+1))-1):
        stdout.write('*')
    print('')
运行结果

 

解法3 最简单
通过字符串相乘

代码编写

n = int(input("输入要显示的层数:"))   
for i in range(n):
    print((n-i-1)*' '+(2*i+1)*'*')
    
for j in range(n-1):
    print((j+1)*' '+(2*(n-(j+1))-1)*'*')
运行结果

还有更多其他的解法,欢迎一起交流学习
————————————————我们的python技术交流群:941108876
智一面的面试题提供python的测试题
使用地址“http://www.gtalent.cn/exam/interview?token=8a33fabdc405d59c90ffca2496195543