Python dicerolling程序跳过滚动

时间:2014-01-20 11:18:32

标签: python dice

我一直在尝试创建一个可以模拟骰子掷骰的程序,可以选择4,6或12个骰子。目前我遇到的问题是,无论我选择什么选项,程序都会完全跳过滚动,并立即询问我是否要再次滚动。我使用Portable Python 3.2.1.1来创建代码。这就是我到目前为止所做的:

#!/usr/bin/env python


import random

def fourdie():
   min = 1
   max = 4
   print (random.randint(min, max));
   return;

def sixdie():
  min = 1
  max = 6
  print (random.randint(min, max));
  return;

def twelvedie():
  min = 1
  max = 12
  print (random.randint(min, max));
  return;


roll = "yes"
y = 1


while roll == "yes" or roll == "y":
  x = raw_input("What die do you want to roll? 4, 6 or 12?");
  if x == 4:
    print (fourdie());
  elif x == 6:
    print (sixdie());
  elif x == 12:
    print (twelvedie());
  else:
    print = "Sorry, I dont appear to have that dice type";

  roll = raw_input("Do you want to roll again?");

任何帮助将不胜感激。 谢谢你的时间!

2 个答案:

答案 0 :(得分:1)

input函数返回一个字符串。

您可以将此字符串转换为int,然后将其与4,6或12进行比较:

x = int(input("What die do you want to roll? 4, 6 or 12?"))
if x == 4:
    // whatever
elif x == 6:
    // whatever

或者您可以将x直接与字符串进行比较:

x = input("... whatever ...")
if x == "4":
    // whatever
elif x == "6":
    // whatever

另外一件事:没有必要在python中用分号结束行。让Guido van Rossum高兴。

答案 1 :(得分:0)

您的基本问题是打字,由Nigel Tufnel解决

我只是,因为它引起了我的兴趣,我想我会提到你可以让你的代码更通用:

while roll in ["yes", "y"]:
    x = int(raw_input("Number of sides on the die you want to roll?"))
    print random.randint(1,x)
    roll = raw_input("Do you want to roll again?")