gpt4 book ai didi

python - 以圆圈形式打印文本

转载 作者:太空狗 更新时间:2023-10-30 00:54:54 25 4
gpt4 key购买 nike

我正在尝试形成一个人选择的文本的图形。我已经做了一个正方形、金字塔和一个平行四边形。

当我试图画一个圆圈时,我遇到了困难。我的想法是使用 for i in range (1, height/2) 它将打印文本 (f.e. --) * i 次。然后我想要另一个 for 循环来打印完全相反的内容,所以从 height/2height,它应该首先打印 height/2* 文本zh 每次 for 循环再次开始时,它应该少打印一次文本。

我不完全确定这是否会以某种方式看起来像一个圆圈。我会给出我的金字塔和圆圈代码。我知道对于这个圈子,我仍然需要用 "" 做一些事情,但是因为我真的不知道如何首先让一切正常工作,所以我还没有开始思考关于我将如何在该代码中需要空格。

def print_pyramid(height):
text = raw_input("Please give in what your pyramid needs to be formed from, you can choose two **, two --, or two letters")
for i in range(1,height+1):
print (height-i+1)*" ", text * i

def print_circle(height):
text = raw_input("Give in what your circle is made of: **, -- or two letters.")
for i in range(1,height/2):
print text*i
for j in range ((height/2)-1,(height/2)+1):
print text*j
for h in range((height/2)+2, height+1):
print text*((height/2)-h)

Example of output, see link

最佳答案

圆的面积是A = π r²,所以可以根据圆上的字符数求出半径1)。半径为 r 的圆的方程是 x² + y² = r²。您可以使用它来导出给定线的(一半)宽度,如 x = √(r² - y²)。然后,只需使用循环迭代半径的两倍并使用 format string从该行居中的文本打印接下来的几个字符。

from math import pi, sqrt, ceil
text = """Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."""
radius = ceil(sqrt(len(text)/pi))
text_iter = iter(text)

for i in range(-radius, radius+1):
num = ceil(sqrt(radius**2 - i**2))
print("{:^{}}".format("".join(next(text_iter, ".") for _ in range(2*num)), 2*radius))

输出:

       Lorem ipsu       
m dolor sit am
et, consectetur
adipiscing elit, s
ed do eiusmod tempor
incididunt ut labore
et dolore magna aliqua
. Ut enim ad minim venia
m, quis nostrud exercita
tion ullamco laboris nis
i ut aliquip ex ea commo
do consequat. Duis aute
irure dolor in reprehend
erit in voluptate velit
esse cillum dolore eu fu
giat nulla pariatur. Exc
epteur sint occaecat c
upidatat non proident,
sunt in culpa qui o
fficia deserunt mo
llit anim id est
laborum......
..........

请注意文本必须如何填充,因为半径必须是整数(因此 ceil)。当然,您可以通过设置 text = ""

来只打印 .(或任何其他占位符)

1) 这是假设每个字符的宽度和高度一样高,但事实并非如此。我想您可以稍微调整一下公式,以每行绘制更少的字符,而不是绘制更多的字符。例如,通过使线条宽度增加一倍,您会得到一个在屏幕上看起来(!)更圆的圆(但实际上是扁圆的)。:

radius = ceil(sqrt(len(text)/(2*pi))) # calculate with 2 characters per "cell"
for i in range(-radius, radius+1):
num = ceil(sqrt(radius**2 - i**2) * 2)
print("{:^{}}".format("".join(next(text_iter, ".") for _ in range(2*num)), 4*radius))

输出:

         Lorem ipsum dolor          
sit amet, consectetur ad
ipiscing elit, sed do eiusmo
d tempor incididunt ut labore
et dolore magna aliqua. Ut enim ad
minim veniam, quis nostrud exerci
tation ullamco laboris nisi ut aliqu
ip ex ea commodo consequat. Duis aut
e irure dolor in reprehenderit in vo
luptate velit esse cillum dolore eu
fugiat nulla pariatur. Excepteur sin
t occaecat cupidatat non proident,
sunt in culpa qui officia deserun
t mollit anim id est laborum..
............................
........................
..................

关于python - 以圆圈形式打印文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33171682/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com