2016-11-20 46 views
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() 
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

在python中,縮進規定了循環或條件的範圍。 你的if語句應縮進像這樣:

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

您需要正確的壓痕,也不需要獲得輸入leaveprogramif條件。

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聲明級聯重構你的代碼。這樣做的一個方法是採取Python的三引號字符串常量的優勢,以及在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])