我正在尝试编写一个代码,以给定的输入来绘制领结。
一个领结:
* *
*** ***
**********
*** ***
* *
我在这里研究2种方法。谁能告诉我我走的路正确吗?我似乎迷路了...
num = int(input("Enter an odd number greater than 4: "))
row = 1
row_space = row*2-1
space_tot = num*2 - row_space*2
stars = int((num*2 - space_tot)/2)
space = ""
for x in range(num):
print("*"*stars+" "*space_tot+"*"*stars)
row += 1
space_tot -= 2
def triangle(n):
for x in range(n,0,2):
print ('*'*x)
for x in range(n,0,-2):
print ('*'*x)
n -= 1
triangle(num)
最佳答案
num = int(input("Enter an odd number greater than 4: "))
center = (num - 1)//2
for row in range(num):
nspaces = 2*abs(row - center)
nstars = num - nspaces
print nstars*'*' + 2*nspaces*' ' + nstars*'*'
怎么运行的
让我们看一下案例
num=5
的期望输出(添加行号):0 * *
1 *** ***
2 **********
3 *** ***
4 * *
让我们将其视为左半部分和右半部分。观察每一半在中间行都有
num
个星。中间行的空格数为零。从中心移开的每一行,每一半的空间数量增加两个。用数学表示:nspaces = 2*abs(row - center)
每半是
num
列宽。因此,如果一半有nspaces
个空格,那么该半个中的星数为:nstars = num - nspaces
计算完这两个之后,只需打印全部内容即可:
print nstars*'*' + 2*nspaces*' ' + nstars*'*'
每行一次。
关于python - 用Python迭代绘制“领结”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25696309/