首页 > 解决方案 > 如何在python中修复星号八边形的代码?

问题描述

问题是我的代码运行但它没有创建八边形。星星的形状类似于八边形,但我需要创建规则形状八边形的代码,我对代码有什么问题感到困惑。

length = int(input("What is the length of one side? "))
for i in range(length):
    print(' ' * (length - i-1) + '*' * (length + i*2))
for i in range(length-1):
    print('*' * ((length * 2)))
for i in range(length):
    print(' ' * (i+1) + '*' * ((length-i)*2))

当用户输入数字时,没有错误消息,但代码不会产生所需的八边形形状。

标签: python

解决方案


这应该工作

length = int(input("What is the length of one side? ")) 
for i in range(length - 1): 
  print(' ' * (length - i-1) + '*' * (length + i*2)) 
for i in range(length): 
  print('*' * ((length + 2 * (length - 1))))
for i in range(length - 2, -1, -1): 
  print(' ' * (length - i-1) + '*' * (length + i*2)) 

第二步的公式是错误的,对于最后一部分,您可以重用第一部分的逻辑但向后运行,希望这对您有帮助:)

编辑 我意识到垂直边的数量与长度不匹配,所以这将是对该代码的更正,但对于长度为 1 的情况,它显示一个点,如果你考虑一下可能有这样的意义,因为对于这个明显的解决方案

 *

***

 *

对角线没有边,所以我认为这个编辑过的版本更好,案例 1 的单个星号是有意义的。


推荐阅读