我正在尝试编写代码,以显示具有奇数宽度的形状。形状完成后,将其放置在外部形状中。用户将能够输入用于形状和行数的字符。我希望产生一个形状,并通过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() 最佳答案 不需要某些for循环:python中一个有用的功能是将char乘以int以获得重复的string的char的方式。例如,如果您这样做:'c' * 10你得到:'cccccccccc'在您的情况下这很有用的原因是您可以使用它来打印spaces和chars。这将比for-loops更加整洁,因为您可以一次调用一次,而不是一遍又一遍地打印单个chars,而不会出现换行符,而可以将整个空格打印为字符串。为了理解我的意思,我使用以下代码编写了原始代码:char = input("enter the char ")rows = int(input("enter the number of inner rows "))for r in range(rows, 0, -1): print(' ' * 2 * (rows-r), end='') print((char+' ') * (2*r+1))看到它整洁了多少?同样,您会注意到,在chars每行的第二个打印中,我使用了计算:2*r +1。这是转换此模式所需的内容:3. * * * *2. * * *1. * *0. *对此(根据您的要求):3. *******2. *****1. ***0. *您可以看到,对于第二行的每一行,chars的数量为2 * row +1。因此,行3具有7个字符,行2具有5等。如果您想删除当前不必要的for-loops,可以将两个prints放在一个语句中:print(' ' * 2 * (rows-r) + (char+' ') * (2*r+1))但是,第一个可能更整洁清晰,因此您可能希望坚持使用单独的语句。将内部三角形嵌入外部三角形首先,我们需要为内部和外部三角形input两个不同的chars。这将使我们能够区分哪个是哪个。我认为最好的方法是保留print语句,该语句像以前一样在三角形之前创建空格,但修改我们绘制字符和它们的模式的方式。这是我们要输入的4行的内容:0. .1. ...2. .....3. .......4. .*******.5. ...*****...6. .....***.....7. .......*.......请注意,将printing进程分成两半最简单。因此,对于上半部分,只需打印一个规则的三角形,而对于下半部分,则打印一个regular,一个flipped和另一个regular。为此,我们要遍历每个8行,并检查何时结束。如果过了一半,我们希望每个较小的三角形的计算都认为它们在三角形的顶部,即重置它们的row计数,因此当printing行4时,我们的计算就像在行。为此,一旦中途结束,我们就需要对0变量乘以总row一半的模(现在总行数不是输入的值,但是将输入的行数加倍,如您所见,我们有一个三角形rows行,但输入的行值8)。这将产生三角形的预期效果,使其为整个三角形的一半大小。最后,要考虑的最后一件事是中心/内部三角形需要像我们之前所做的那样翻转。由于我们的行数现在从顶部的4向下而不是相反,我们需要将该行的计算更改为0,以便将其翻转。考虑到所有这些,最终代码可能类似于:innerChar = input("enter the inner char ")outerChar = input("enter the outer char ")rows = int(input("enter the number of inner rows "))for r in range(2 * rows): #print the white space on the left print(' ' * 2 * (2 * rows-r), end='') if r < rows: #top triangle print((outerChar+' ') * (2*r + 1)) else: #working with the row modulo 2 r %= rows #bottom three triangles print((outerChar+' ') * (2*r + 1), end='') print((innerChar+' ') * (2*(rows-r) - 1), end='') print((outerChar+' ') * (2*r + 1))关于python - python:嵌套,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45531352/ 10-15 02:00