2016-09-29 7 views
-5

2番目のwhileループでは、サイクルごとにアスタリスク(*)が1回だけ表示されます。表示不正なパターンが表示される

import sys 

n = 0 
a = 0 

while (n < 6): 
    n = n + 1 
    while(a < n): 
     sys.stdout.write('*') 
     a = a +1 
    print '' 

パターンは次のとおりです。

* 
* 
* 
* 
* 
* 
+5

あなたの問題は何ですか? – sunkuet02

+7

あなたはどんなパターンを期待していましたか?最も可能性の高い問題は、ループの開始時に 'a'をゼロに戻すことは決してありません。 – JJJ

+2

これは2つのネストされたforループではるかに簡単です。 –

答えて

0

は、あなたはそれが間の線で6つ星の6つのパターンを印刷したいと仮定すると、これはあなたが何をしたいです:

import sys 

n = 0 
a = 0 

while (n < 6): 
    n = n + 1 
    a=0 
    while(a < n): 
     sys.stdout.write('*',end="") 
     a = a +1 
    print '' 
0

ご使用のバージョンに応じた解決策は次のとおりです。

import sys 

n = 0 
a = 0 

while (n < 6): 
    n = n + 1 
    a = 0 
    while(a < n): 
     print('*', end="") 
     a = a + 1 
    print('') 

短いバージョンをご希望の場合は、次のようにしてください:

print('\n'.join(['*'*i for i in range(1,7)])) 
関連する問題