如何在python中创建X的金字塔

时间:2013-08-30 02:59:48

标签: python

   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

11 个答案:

答案 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)

由于您的老师需要ij,我猜他想要一些类似旧式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))