2016-11-20 1 views
0

저는 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'를 여러 번 할 필요가 없습니다. 당신은'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

들여 쓰기 문제 이외에, 당신은 문자열의 배열, 각 죽을 하나를 생성하고 단 한 줄의 코드로 if 문장의 폭포를 교체하여 코드를 리팩토링 할 수 있습니다. 그렇게하는 한 가지 방법은뿐만 아니라 split() 방법, 파이썬 트리플 인용 문자열 리터럴을 활용하는 것입니다,

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] 만드는 좋은 부작용이 그 문자열 있도록 인덱스 1에서 시작하고 항상 다이의 숫자에 해당합니다. 이 경로를 간다면 if 문장의 전체 단계를 단일 행으로 바꿀 수 있습니다.

print(die[number]) 
관련 문제