2017-02-14 16 views
-1
x=0 
y=0 

while 1==1: 

    while y!=5: 
     y=y+1 
     print(str(x) + str(y)) 


    else: 
     x=x+1 
     #NOW GO TO WHILE 1==1 AND DO THAT AGAIN 

このコードでは、01; 02; 03; 04; 05を印刷し、次に11; 12; 13; 14; 15を出力します。しかし、現実には最初の5枚しかプリントされていません。なぜなら、else:の後にスタートする方法がわからないからです。elseのループの先頭に戻る方法

編集:ごめんなさい、コードを分かりやすくしようとしましたが、私はいくつかの間違いを犯しました。それは本当に問題ではありませんでした。

+4

どういう意味ですか?常にループを維持します。常に 'while 1 == 1'に戻ります。唯一のことは、 'y'は' 5'に等しくなるまでインクリメントされるため、ループ内では何も印刷されません。 –

+0

... 'continue'?そして、y = 0をリセットすることを忘れないでください。 –

+0

2番目のwhileループはy = 5の後には入力されません。問題はelseから始めまでの間にあるわけではなく、ロジックが意味をなさないということです。また、 'else'を手前に' if'なしで使用しています。これは動作しません。 –

答えて

2

はあなたよりも、同様の構造を持つ作業コードです:

x = 0 
y = 0 

while x != 2: 
    while y != 5: 
     y = y + 1 
     print(str(x) + str(y)) 
    else: 
     y = 0 
     x = x + 1 

しかし、それをしないでください。代わりに:

for x in range(2): 
    for y in range(5): 
     print '%d%d' % (x,y+1) 
+1

Python 2を使用している場合、 'xrange 'は' range'よりも良いアイデアです。 –

+0

@FredLarson:私は皆を喜ばせることができません。私は 'xrange'を使ったので昨日誰かが苦情を言いました;)また、OPのコードを考えると、私は正しい結果と読みやすさがパフォーマンスIMHOの前に来ると思います。 –

+2

私はあなたの答えを全く批判するつもりはありませんでした。ちょうど少し追加する。これは、おそらく実際には、この些細なコードでは何の違いもありません。 –

0

私はより良いアプローチは、ネストされたforループを行うことだと思います。ここで

0
from itertools import count 

for x in count(): 
    [print('{}{}'.format(x, y)) for y in range(1, 6)] 

、それはPython的(宿題はなかった希望)です。

0

else:を削除し、合計を印刷しないように書式設定された印刷を使用するだけです。すべてのコード出力の

x = 0 
while 1 == 1: 
    y = 1 
    while y <= 5: 
     print '%d%d' % (x,y) 
     y = y+1 
    x = x+1 
+0

キャッチ、おかげで本当に問題はなかった私はちょうど愚かであり、元のコードを書き直して簡単にしています。 – CandyKing

0

まず:

あなたのコードの改良版です

1 
2 
3 
4 
5 

してから停止します。あなたはその後、必要

x = -1 
while True: 
    x += 1 

01 
02 
03 
04 
05 
11 
12 
13 
[...] 

あなたが継続的に、これはコードのこの作品から始めないためにxをインクリメント無限ループを必要とし、この出力を取得するには:何を求めていることはこれですループはyを1から5までインクリメントし、xとyの文字列連結を出力します。

for y in range(5): 
    print(str(x) + str(y+1)) 

forループとwhileループのネストを行います。

x = -1 
while True: 
    x += 1 
    for y in range(5): 
     print(str(x) + str(y+1)) 
関連する問題