Python 创建由符号组成的ascii三角形
其想法是创建一个三角形,用*包围,而三角形的$符号、空间和高度都是用户输入。 例如,当高度=9,$=5,空格=2时,应产生以下输出:Python 创建由符号组成的ascii三角形,python,Python,其想法是创建一个三角形,用*包围,而三角形的$符号、空间和高度都是用户输入。 例如,当高度=9,$=5,空格=2时,应产生以下输出: * *$* *$$$* *$ $$* *$$$ $$* *$$$ $$$$* *$ $$$$$ $* *$$$$ $$$$$ * ***************** 我尝试了两种不同的方法,比如将$和空格串在一起,然后按它们的索引打印,或者计算每个字符的打印次数而不重叠 然而
*
*$*
*$$$*
*$ $$*
*$$$ $$*
*$$$ $$$$*
*$ $$$$$ $*
*$$$$ $$$$$ *
*****************
我尝试了两种不同的方法,比如将$和空格串在一起,然后按它们的索引打印,或者计算每个字符的打印次数而不重叠
然而,我无法找到任何有效的方法:(
感谢您的帮助:)只是CS的第一学期
我的代码:
height=int(输入('输入高度:'))
numSigns=int(输入('enternumber of$:'))
numSpaces=int(输入('输入空格数:'))
信号计数器=0
空间计数器=0
符号=“$”
行=(符号*numSigns+''*numSpaces)*高度
count1=0
count2=0
x=1
对于范围内的i(高度):
对于范围内的j(高度-i-1):
打印(“”,结束=“”)
打印('*',结束='')
如果i==0:
打印()
p=x
x=x+i-1
对于范围(p,x)内的a:
打印(第[a]行,结束=“”)
如果我0:
打印(“*”)
实际产量:
Enter height: 9
Enter number of $: 5
Enter number of spaces: 2
*
**
*$*
*$$*
*$$ *
* $$$*
*$$ $*
*$$$$ *
*$$$$$ *
让我们看看它的逻辑是什么。你最终会找到逻辑 第一。 如何创建左侧星形图案,如下所示:
*
*
*
*
第一件事是每颗星左边有多少个空格等于图案的总高度-当前高度状态。例如,让我们以第二行为例:
TOTAL_HEIGHT_OF_PATTERN = 4
CURRENT_HEIGHT_STATUS = 2
NUMBER_OF_SPACE_ON_LEFT = TOTAL_HEIGHT_OF_PATTERN - CURRENT_HEIGHT_STATUS = 2
第二。
如何在这两者之间创建`$`和`空格`模式:
*
*$*
*$$$*
* $$$*
*$$$$$ *
*$$$$$ $$*
*$$$$$ $ $*
*$$$ $$$$$$*
对于上述系统,在给定高度处可找到多少空间。空格:0表示高度@1、2、3
空间:4,5,6的高度为1
空间:7,8的高度为2 我们可以看到这样一种模式:在每个高度
(当前高度\u状态-1)//3
将找不到任何空间。对于
NO\u OF doller
我们可以看到它等于2*(当前高度状态-NO\u OF doller空格)-3
最后,通过使用shuffling操作
我们可以对doller和空格进行shuffle操作
查看此代码:
from random import shuffle
height = int(input('Height : '))
doller = int(input('Dollor : '))
spaces = int(input('Spaces : '))
for i in range(1,height+1):
no_spaces = (i-1)//3
str_ = ['$' for i in range(2*(i-no_spaces)-3)]+[' ']*no_spaces
shuffle(str_)
if i == 1:
print(' '*(height-i) + '*')
elif i != height and i != 1:
print(' '*(height-i) + '*' + ''.join(str_) + '*')
else:
print('*'*(2*height-1))
Height : 9
Dollor : 2
Spaces : 5
*
*$*
*$$$*
*$$ $*
*$$ $$$*
*$$$$$$ $*
* $$$$$$$*
*$$ $$$$$$$ *
*****************
输出:
from random import shuffle
height = int(input('Height : '))
doller = int(input('Dollor : '))
spaces = int(input('Spaces : '))
for i in range(1,height+1):
no_spaces = (i-1)//3
str_ = ['$' for i in range(2*(i-no_spaces)-3)]+[' ']*no_spaces
shuffle(str_)
if i == 1:
print(' '*(height-i) + '*')
elif i != height and i != 1:
print(' '*(height-i) + '*' + ''.join(str_) + '*')
else:
print('*'*(2*height-1))
Height : 9
Dollor : 2
Spaces : 5
*
*$*
*$$$*
*$$ $*
*$$ $$$*
*$$$$$$ $*
* $$$$$$$*
*$$ $$$$$$$ *
*****************
与其完全使用循环,不如将它们划分为过程代码。逻辑与我的相似。为了制作特定的
括起字符串
,我们可以使用make_str函数
谁的逻辑围绕剩余的$
height = int(input('Height : '))
doller = int(input('Dollor : '))
spaces = int(input('Spaces : '))
def make_str(rem, len_str):
x = 0
s = ''
for _ in range(len_str):
if rem >0:
s += '$'
rem -= 1
else:
s += ' '
x += 1
if x == spaces:
x = 0
rem = 5
return (rem, s)
rem_dollor = doller
for i in range(1,height+1):
num = 2*(i)-3
rem_dollor, str_ = make_str(rem_dollor, num)
if i == 1:
print(' '*(height-i) + '*')
elif i != height and i != 1:
print(' '*(height-i) + '*' + str_ + '*')
else:
print('*'*(2*height-1))
**输出:**
Height : 9
Dollor : 4
Spaces : 3
*
*$*
*$$$*
* $$*
*$$$ $*
*$$$$ $$*
*$$$ $$$$$*
* $$$$$ $$*
*****************
欢迎来到堆栈溢出!请坐飞机。你的问题是什么?请澄清。如果你正在寻找家庭作业方面的帮助,请阅读并更全面地阅读。老实说,我希望有一个大致的想法,而不是一个完整的代码。下次我会尽我所能遵循指导原则:)非常感谢你的帮助,这实际上与我所拥有的非常接近,但下次我会将我的代码与之一起发布!编辑:这是我有史以来的第一篇帖子,顺便说一句,很抱歉被忽略了。在我仔细检查了你写的东西,并自己处理了几分钟后,它遇到了与我的代码相同的问题,而不是混乱字符串,我需要它们按连续顺序排列。例如:如果dollers=4,spaces=2,金字塔将始终有4后跟2个空格,即使它们被新行分隔,我将编辑帖子并共享我的代码:D@Flyleaf我明白了,等几分钟我会更新,因为我现在很忙,不管怎样谢谢你,慢慢来:)@Flyleaf checkout我刚刚在那里添加了新答案