2

Pythonプログラムで、アスタリスクを使用して「ピラミッド」または「三角形」を作成できるプログラムを作成しようとしています。私はすでにコードを開始しましたが、それを理解できないようです。

これが私が理解できたコードです:

    def triangle():
            totalRows = int(eval(input("How big? ")))
            for currentRows in range(1,totalRows+1):
                for currentCol in range (1, currentRows+1):
                            print("*", end = " ")
    triangle()

最終結果はこれを反映するはずです!

How big? 1
* 
------------------------------------------------------
How big? 2
 * 
* * 
------------------------------------------------------ 
How big? 3
  * 
 * * 
* * * 
------------------------------------------------------ 
4

10 に答える 10

5

要件に合わせて RParadox のソリューションをわずかに変更します。

for i in range(totalRows + 1):
    numWhite = totalRows - i
    print ' ' * numWhite + '* ' * i
于 2012-11-06T23:18:11.937 に答える
2
n = 10                                                                          
for i in range(n-1):                                                            
    numwhite = n-i                                                              
    print ' '*numwhite + '*'*i + '*'*i  



         **
        ****
       ******
      ********
     **********
    ************
   **************
  ****************
于 2012-11-06T22:47:55.613 に答える
1
    def build_pyr(depth):
            rows = [ (depth-i)*' ' + i*2*'*' + '*'   for i in range(depth-1) ]
            for i in rows:
                    print i

これは機能しますが、各深さに2n+1のアスタリスクが追加されます。リスト内包表記から+1アスタリスクを削除し、手前に行リストに最初のアスタリスクを追加するだけです。

于 2012-11-06T23:41:06.207 に答える
0
def xmastree(maxwidth):
    for i in xrange(1,maxwidth,2):
        print '{0}'.format('*'*i).center(maxwidth)

また:

def xmastree2(maxrows):
    for i in xrange(1,maxrows*2,2):
        print '{0}'.format('*'*i).center(maxrows*2)

うーん、まだ応答がありません。おそらく十分に一般的ではありませんか? わかりましたこれを試してください;-):

def triangle(pattern, n):   
    maxwidth = n*len(pattern)*2
    for i in xrange(1,n*2+1,2):
        print '{0}'.format(pattern*i).center(maxwidth)

>>> triangle(' ^', 5)
          ^         
        ^ ^ ^       
      ^ ^ ^ ^ ^     
    ^ ^ ^ ^ ^ ^ ^   
  ^ ^ ^ ^ ^ ^ ^ ^ ^ 
于 2012-11-06T23:37:19.960 に答える
0

ほんの数ステップで実行できます。

def main():

    rows = input(" enter the number of rows : ")
    for i in range (rows):
        print ' '*(rows-i-1) + '*'*(2*i+1)
main()
于 2014-01-12T06:52:31.577 に答える
0

皆さん、本当に複雑な観点から取り組んでいますね! なぜこのプログラムを使わないのですか?:

asterisknum = int(raw_input('How many asterisks? Input here: '))
base = 0
if asterisknum % 2 == 0:
  print ('Added 1 to even number')
  asterisknum = asterisknum + 1
while asterisknum != -1 :
  print (' ' * base + '*' * asterisknum)
  base = base + 1
  asterisknum = asterisknum - 2
raw_input('Press <Enter> to exit')

私はこのプログラムを一度だけ動かしただけですが、誰もが知っているはずの python の非常に単純な部分を使用しました。同じプログラムで再び動作するように微調整することもできます...

于 2013-12-18T02:15:05.963 に答える