2015-04-12 217 views
1

此代码通过我的教授给了我,并打印* s的三角形:的Python for循环打印三角形

def printTriangle(size): 
    for i in range(0,size): 
     for j in range(0,i+1): 
     print "*", 
     print 

这是我失败的尝试进行编码的逆三角:

def printInvertedTriangle(size): 
    for i in range(size,0): 
     for j in range(size,i-1): 
      print "*", 
     print 

我已经尝试了这许多不同的方式,但是这是我觉得是应该的,并且程序结束前,只给了我的空白。

我的理解是,这是怎么他的作品:

for i in range(start,finish): 
    for j in range(start,step): 
     print "*", 
    print 

任何人都可以向我解释为什么第一个块我的教授给我的工作,为什么我的打印空白?我想到我明白他的循环;所以我在做什么我的错?它应该是什么样子?我想要基于他的循环的东西。他违背了我一直在Python教程中阅读的内容,因为他只有(开始,步骤),而教程则说它是开始(停止,步骤)。

我开始了与JS编程,并认为一些简单的Python的循环将在公园里散步...

非常感谢任何及所有的帮助! #noob

+2

仔细阅读:https://docs.python.org/2/library/functions.html#range *如果步参数省略,则默认为1 *在这种情况下,你有两种位置参数传递给他们将永远是开始和停止,永不停止。 – Shashank

+1

如果你希望你的迭代,开始以高数量和倒计时,你需要指定一个负的一步。例如。 '范围(大小-1,-1,-1)'将具有'大小1'作为其第一项和'0'作为其最后。 – khelwood

回答

0
def printInvertedTriangle(size): 
    **for i in range(size,0):** 
      for j in range(size,i-1): 
       print "*", 
      print 

你显示空白,我相信具有误差为两行的结果。由于此索引计算了通过线路的次数,因此需要通过(0,大小)范围内的x次迭代来运行。

在第二个for循环中,随着行数从1增加到2到3 ...等,使用变量i和max(大小)来构建反转三角形。

试试这个:

def printReverseTriangle(size): 
    for i in range(0,size): 
     for j in range(i,size): 
      print "*", 
     print 
+0

这正是我需要的!感谢您回答我的具体问题,并散列出我的代码! – jott

0

你的脚本没有输出的原因是你的范围不起作用。

正如我们在解释见:

>>> range(10,0) 
[] 

它输出空列表。

完成所需内容的一种方法是使用reverse()内置函数来反转列表。

for i in reversed(range(0,size)): 
     for j in range(0,i+1): 

为了帮助您将来,请尝试使用解释器来检查事物的输出。

您可以在交互模式下打开任何运行该程序的python模块,然后让您以后使用解释器。

python -i script.py 
+0

这是工作有一手。我使用交互式编辑器,但我想我需要检查自己的循环语法! – jott

0

这里是一个程序,我不得不做出对我的周末任务。它也提供了一个相当不错的倒三角形。

def reverse_triangle(n): 
    r=n/2+1 
    for i in range(r-1,0,-1): 
      print" "*(r-i)," *"*i 
def main(): 
    n=input('Enter the size=') 
    reverse_triangle(n) 
main() 

注:在此位" *"*i我把空间中的星号之前,因为我的电脑的Python 2.7的版本不对称印刷图案不添加的空间。您可以在空间或没有它的情况下尝试它,并检查它是否适用于您。