2016-11-20 7 views
0

私はPythonの初心者です。プログラムを実行すると、サイコロの画像は表示されません。写真は死んだようなものですが、私は写真をインポートしようとしていません。ここに私のコードはPythonで私のサイコロプログラムで何が問題になっていますか?

leaveprogram = 0 
from random import randint 
uniform = 0 
random = 0 
while leaveprogram != "q": 
    print ("Dice Rolling Program") 
    print ("press enter to roll") 
    input() 
    number = randint(1, 6) 
if number == 1: 
    print("[-----------]") 
    print("[   ]") 
    print("[  o  ]") 
    print("[   ]") 
    print("[-----------]") 
    leaveprogram=input() 
if number == 2: 
    print ("[-----------]") 
    print ("[   ]") 
    print ("[ o o ]") 
    print ("[   ]") 
    print ("[-----------]") 
    leaveprogram=input() 
if number == 3: 
    print ("[-----------]") 
    print ("[ o o ]") 
    print ("[  o  ]") 
    print ("[   ]") 
    print ("[-----------]") 
    leaveprogram=input() 
if number == 4: 
    print ("[-----------]") 
    print ("[ o o ]") 
    print ("[ o o ]") 
    print ("[   ]") 
    print ("[-----------]") 
    leaveprogram=input() 
if number == 5: 
    print ("[-----------]") 
    print ("[ o  o ]") 
    print ("[  o  ]") 
    print ("[ o  o ]") 
    print ("[-----------]") 
    leaveprogram=input() 
if number == 6: 
    print ("[-----------]") 
    print ("[ o  o ]") 
    print ("[ o  o ]") 
    print ("[ o  o ]") 
    print ("[-----------]") 
    leaveprogram=input() 
+4

インデントが間違っています。 – TigerhawkT3

+2

具体的には、それらの 'if'ステートメントをすべてインデントして、' while'ループでそれらを実行する必要があります。 –

+1

あなたの 'if'文はwhileループの中にあるべきです(正しくインデントされている)。また、それを行うために複数の 'print'sを必要としません。 print( '' 'ここで改行' ') 'を使うことができます。三重引用符は 'print'関数内の複数の行文字列を許します。 –

答えて

0

で、インデントはループの範囲や条件を規定します。 あなたの文はそうのようにインデントする必要がある場合:

leaveprogram = 0 
from random import randint 
uniform = 0 
random = 0 
while leaveprogram != "q": 
    print ("Dice Rolling Program") 
    print ("press enter to roll") 
    input() 
    number = randint(1, 6) 
    if number == 1: 
     print("[-----------]") 
     print("[   ]") 
     print("[  o  ]") 
     print("[   ]") 
     print("[-----------]") 
     leaveprogram=input() 
. . . 
0

あなたがへこみを修正する必要があり、また、あなたはすべてのif状態でleaveprogramのための入力を取得する必要はありません。

from random import randint 
leaveprogram = 0 
uniform = 0 
random = 0 
while leaveprogram != "q": 
    print ("Dice Rolling Program") 
    print ("press enter to roll") 
    leaveprogram=input() 
    number = randint(1, 6) 
    if number == 1: 
     print("[-----------]") 
     print("[   ]") 
     print("[  o  ]") 
     print("[   ]") 
     print("[-----------]") 
    if number == 2: 
     print ("[-----------]") 
     print ("[   ]") 
     print ("[ o o ]") 
     print ("[   ]") 
     print ("[-----------]") 
    if number == 3: 
     print ("[-----------]") 
     print ("[ o o ]") 
     print ("[  o  ]") 
     print ("[   ]") 
     print ("[-----------]") 
    if number == 4: 
     print ("[-----------]") 
     print ("[ o o ]") 
     print ("[ o o ]") 
     print ("[   ]") 
     print ("[-----------]") 
    if number == 5: 
     print ("[-----------]") 
     print ("[ o  o ]") 
     print ("[  o  ]") 
     print ("[ o  o ]") 
     print ("[-----------]") 
    if number == 6: 
     print ("[-----------]") 
     print ("[ o  o ]") 
     print ("[ o  o ]") 
     print ("[ o  o ]") 
     print ("[-----------]") 
0

インデントの問題に加えて、あなたは、文字列の配列、各ダイのための1つを作成し、単一のコード行でif文のカスケードを置き換えることで、あなたのコードをリファクタリングすることができます。ように文字列がそのあなた、

diceString = """ 
*************** 
[-----------] 
[   ] 
[  o  ] 
[   ] 
[-----------] 
*************** 
[-----------] 
[   ] 
[ o o ] 
[   ] 
[-----------] 
*************** 
[-----------] 
[ o o ] 
[  o  ] 
[   ] 
[-----------] 
*************** 
[-----------] 
[ o o ] 
[ o o ] 
[   ] 
[-----------] 
*************** 
[-----------] 
[ o  o ] 
[  o  ] 
[ o  o ] 
[-----------] 
*************** 
[-----------] 
[ o  o ] 
[ o  o ] 
[ o  o ] 
[-----------]""" 

die = diceString.split("\n***************\n") 

これはdie[0]空の文字列を作るの素敵な副作用があります。そうするための一つの方法は、Pythonのトリプル引用符で囲まれた文字列リテラルを活用するだけでなく、split()方法ですインデックス1で始まることに興味があり、常にダイ上の数字に対応しています。このルートに進むと、ifステートメントのカスケード全体を1行で置き換えることができます。

print(die[number]) 
関連する問題