首页 > 解决方案 > Python中的字体图形

问题描述

我是python的初学者,我遇到了这个问题,我正在努力解决它。我应该从字符“X”组成一个星,这是函数ascii_star(size: int) -> None:

size 总是大于 5 的奇数

星星应该如何寻找 size = 7

这是我的代码

导入数学

def ascii_star(size: int) -> 无:

x1_placement = 1
x2_placement = math.floor(size/2)+1
x3_placement = size
for j in range (1, size+1):
    if j == math.floor(size/2 + 1):
        for _ in range (1, size+1):
            print("O", end="")
    for i in range (1, size +1):
        if i== x1_placement or i == x2_placement or i == x3_placement:
            print("X", end="")
            continue
        print(" ", end="")
    print()
    x1_placement += 1
    x3_placement -= 1

但是在应该只是由XI组成的线的中间线有一个X被推到一边的问题。

我的星星

有人可以告诉他如何解决这个问题吗?

标签: python

解决方案


if j == math.floor(size/2 + 1):块负责在图像的中间绘制水平线。在这个块执行之后,你继续执行这个for i in range (1, size +1):块,它会渲染对角线和垂直线。但是这些应该是互斥的——如果你先打印水平线,然后再打印对角线/垂直线,它们将连接在一起,并且线的长度将是预期的两倍。这就是你看到的原因OOOOOOO___X___

试着把你for i in range (1, size +1):放在一个else块中,这样它就不会在有水平线的行上执行。

import math
size = 7
x1_placement = 1
x2_placement = math.floor(size/2)+1
x3_placement = size
for j in range (1, size+1):
    if j == math.floor(size/2 + 1):
        for _ in range (1, size+1):
            print("O", end="")
    else:
        for i in range (1, size +1):
            if i== x1_placement or i == x2_placement or i == x3_placement:
                print("X", end="")
                continue
            print(" ", end="")
    print()
    x1_placement += 1
    x3_placement -= 1

结果:

X  X  X
 X X X
  XXX
OOOOOOO
  XXX
 X X X
X  X  X

或者,完全删除您的if j == math.floor(size/2 + 1):块,并将该条件移动到您的for i in range (1, size +1):循环中。您将失去为不同方向的线呈现不同字符的能力,但由于您的问题陈述没有明确要求,因此改进简洁可能是值得的。

import math
size = 7
x1_placement = 1
x2_placement = math.floor(size/2)+1
x3_placement = size
for j in range (1, size+1):
    for i in range (1, size +1):
        if i== x1_placement or i == x2_placement or i == x3_placement or j == math.floor(size/2 + 1):
            print("X", end="")
            continue
        print(" ", end="")
    print()
    x1_placement += 1
    x3_placement -= 1

结果:

X  X  X
 X X X
  XXX
XXXXXXX
  XXX
 X X X
X  X  X

推荐阅读