2016-11-20 42 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])