X
XXX
XXXXX
XXXXXXX
这是我计算机科学课程入门作业的一部分。老师教我们关于i和j的范围。我完全不知道如何实现金字塔,而且我几个小时都在尝试不同的事情。除了我已经上过的两个50分钟的课程,我从未接触过任何类型的编程。我非常感谢一些帮助/建议。
这段代码是我们当前教学和所谓知识的范围:
for i in range(10):
line = ""
for j in range(10):
if j%2 == 0:
c = ' '
else:
c = '*'
line += c
print line
答案 0 :(得分:3)
您可以使用字符串格式:
基于基数的大小:
def create_pyramid(base):
for i in xrange(1, base+1, 2):
print '{:^{}}'.format('X'*i, base)
...
>>> create_pyramid(7)
X
XXX
XXXXX
XXXXXXX
根据等级数量:
def create_pyramid(level):
for i in xrange(1, 2*level, 2):
print '{:^{}}'.format('X'*i, (2*level)-1)
...
>>> create_pyramid(5)
X
XXX
XXXXX
XXXXXXX
XXXXXXXXX
答案 1 :(得分:2)
由于您的老师需要i
和j
,我猜他想要一些类似旧式C语言的代码,试试这个:
N,line,c,p = 10,'','',1
spaces = ' '*N
for i in range(N):
spaces = spaces[0:N-i]
c = ''
for j in range(p):
c += "X"
line += spaces+c+'\n'
p += 2
print line
答案 2 :(得分:2)
这是另一种解决方案:
def create_pyramid(base):
star = 1 # first row has 1 star
for i in range((base - 1) / 2, -1, -1): # (base - 1) / 2 will determine the first space given the base
print i * " ", star * "X" # spaces
# the , star * "X" on the above line means printing on the same line with no space
star += 2 # incrementing by 2 each time
...
>>>create_pyramid(7)
X
XXX
XXXXX
XXXXXXX
答案 3 :(得分:2)
只想再想一想。
如果您考虑使用 功能 方式对问题进行建模,您可以轻松地使用此递归解决方案:
def pyramid(N, i = 0):
if N > 0:
print (N - 1) * ' ' + '*' * (i * 2 + 1)
pyramid(N - 1, i + 1)
>>>pyramid(5)
*
***
*****
*******
*********
答案 4 :(得分:1)
从一个变量而不是两个变量来看问题。变量num_bricks
是金字塔当前级别中“砖块”的数量,变量num_spaces
是当前级别中的空格数。
金字塔的一侧应始终有与另一侧一样多的空间。因此,对于金字塔的每一行,您所需要做的就是打印一半空间,打印所有X,然后打印另一半空格(确保使用print 'X',
而不是{{1} } - 末尾的逗号表示'不要开始新行'。print 'X'
本身对于开始新行很有用。)
:
print
所以剩下要做的就是找到一条规则来管理for i in range(num_spaces / 2):
print ' ',
for i in range(num_bricks):
print 'X',
for i in range(num_spaces / 2):
print ' ',
print
#a blank print statement will start a new line without printing anything on it
和num_spaces
应该从一个级别到另一个级别的增加/减少的方式。
答案 5 :(得分:1)
您可以创建金字塔对象:
class Pyramid(object):
def __init__(self, size):
self.size=2*size
def __repr__(self):
return '\n'.join('{:^{}}'.format('*'*i, (self.size)-1) for i in range(1,self.size,2))
然后打印它的实例:
>>> print Pyramid(7)
*
***
*****
*******
*********
***********
*************
答案 6 :(得分:1)
试试这个
for i in range(1,10):
print (" "*(10-i)+"X"*i+"X"*(i-1))
答案 7 :(得分:0)
这是最简单的方法之一。
a = 10
for x in xrange(0,a):
print (a-x)*" "+x*"x"
它计为10,并且对于每一行,它从10中减去将在行中的X's
的数量,并将在X's
前面打印那么多空格,这样就得到了金字塔的样子。
答案 8 :(得分:0)
有趣的问题。成为n
金字塔的高度:
print('\n'.join(' ' * (n - x - 1) + 'x' * (2 * x + 1) for x in range(n)))
答案 9 :(得分:0)
def pyramid():
n=int(raw_input("enter a num:"))
for i in range(n):
print " "*(n-i-1)+"*"*(2*i+1)
pyramid()
这是我能找到的最简单的代码;)
答案 10 :(得分:0)
尝试以下操作:
num = int(input("Enter a range here: "))
for i in range(num):
if i<= num
print(" "*(num-1-i)+"X "*(i+1))