我试图写代码,将显示一个奇数宽度的形状。完成形状后,它将被放置在外部形状中。用户将能够输入用于形状和行数的字符。 我希望产生一个形状,并与for循环,产生一个外部形状。你知道吗
***** .
*** ...
* .....
.*****.
...***...
.....*.....
这是我现在的密码。我只知道如何创造一个形状。你知道吗
char = (input("Enter first charactrer"))
rows = int(input("enter the number of rows"))
for m in range(rows, 0, -1):
for n in range(0, rows-m):
print(end=" ")
for n in range(0,m):
print(char,end=" ")
print()
一个简单的方法是一开始就不用担心空间。只需生成每行的非空格符号,并将它们保存到一个列表中。最后,确定最大行的宽度,并使用
str.center
方法以正确的空间量打印每一行。你知道吗输出
要使用的字符作为双字符字符串传递给
tri
,内部字符(ic
)的默认值为“*”,外部字符(oc
)的默认值为“.”。但是如果你想使用其他字符,你可以传递它们,就像这样:不需要某些for循环:
python中一个有用的特性是可以用
char
乘以int
得到重复string
的char
。你知道吗例如,如果您这样做:
你会得到:
这在您的案例中很有用的原因是您可以使用它来打印
spaces
和chars
。这将比for-loops
更整洁,因为您可以通过一次调用将整个空格打印为字符串,而不是反复打印单个chars
而不换行。你知道吗为了理解我的意思,我使用以下代码编写了您的原始代码:
看到多整洁了吗?另外,您可以注意到,在
chars
的每一行的第二次打印中,我使用了计算:2*r +1
。以下是转换此模式所需的内容:对这个(按你的要求):
您可以看到,对于第二行的每一行,
chars
的数量是2 *
的row
+1
。所以行3
有7
个字符,行2
有5
等如果您想,现在已经摆脱了不必要的
for-loops
,您可以将这两个prints
放在一个语句中:然而,第一个可能会被认为更整洁、更清晰,所以您可能希望坚持使用单独的语句。你知道吗
将内三角形嵌入外三角形
首先,我们需要
input
两个不同的chars
的内三角形和外三角形。这将使我们能够区分哪个是哪个。你知道吗我认为最好的方法是保持
print
语句,它像以前一样在三角形之前创建空间,但是修改我们绘制字符及其模式的方式。你知道吗这就是我们想要的
4
行的输入:注意将
printing
进程一分为二是多么简单。所以上半部分只打印一个正三角形,但下半部分打印一个regular
,一个flipped
,另一个regular
。你知道吗要做到这一点,我们需要循环遍历每个
8
行,并在完成一半时进行检查。如果过了一半,我们希望每个小三角形的计算都认为它们位于三角形的顶部,即重置它们的row
计数,因此当printing
行4
时,我们的计算就像打印在0
行一样。为了实现这一点,一旦过了一半,我们需要将row
变量模化为总rows
的一半(现在总行不是输入的,而是输入量的两倍,正如您所看到的,我们有一个三角形,其中有8
行,但输入的行值是4
)。这将使三角形达到总三角形的一半大小的预期效果。你知道吗最后,要考虑的最后一件事是,中心/内三角形需要像我们之前所做的那样翻转。由于我们的行计数现在是从顶部的
0
向下,而不是相反,我们需要将该行的计算更改为rows - r
,这样它就被翻转了。你知道吗考虑到所有这些因素,最终的代码可能类似于:
相关问题 更多 >
编程相关推荐