2014-10-11 97 views
0

[解决]这是一个愚蠢的错字。抱歉。Python骰子游戏错误

我目前正在学习python,并且遇到一些错误,如果你能指出我如何修复它们,以及为什么它们会是很好的错误,因为我通过试验和错误学习这样的项目。 错误;

Would you like one or two die?2 
Traceback (most recent call last): 
    File "diceRoller.py", line 34, in <module> 
    rollDice2(); 
    File "diceRoller.py", line 18, in rollDice2 
    result = random.randrage(2,13) 
AttributeError: 'module' object has no attribute 'randrage' 

我的代码;

import random 
import time 

numDice = input("Would you like one or two die?") 
if (numDice == 1): 
    rollDice1(); 
else: 
    rollDice2(); 

def rollDice1(): 
    result = random.randrange(1,7) 
    print ("It landed on..") 
    time.sleep(1) 
    print(result) 
    try: 
     answer = input("would you like to play again? [y/n]") 
    except: 
     pass 
    if answer in ('y','Y'): 
     return True 
    return False 

def rollDice2():   
    result = random.randrange(2,13) 
    print ("It landed on..") 
    time.sleep(1) 
    print(result) 
    try: 
     answer= input("would you like to play again? [y/n]") 
    except: 
     pass 
    if answer in ('y', 'Y'): 
     return True 
    return False 

while rollDice1 or rollDice2(): 
    continue 
+2

这是一个错字。它应该是:'result = random.randrange(2,13)' – bernie 2014-10-11 00:16:37

+0

谢谢,我想它睡觉的时间都是这个问题吗? – 2014-10-11 00:19:43

+0

另外,我想你应该在调用它们之前先定义你的方法。并使用主要方法来测试它们。 – 2014-10-11 00:20:17

回答

1
def rollDice1(): 
    result = random.randrange(1,7) 
    print ("It landed on..") 
    time.sleep(1) 
    print(result) 

def rollDice2(): 
    result = random.randrange(2,13) 
    print ("It landed on..") 
    time.sleep(1) 
    print(result) 

def main(): 
    while True: 
     numDice = input("Would you like one or two die?") 
     if numDice == "1": 
      rollDice1() 
      break 
     elif numDice == "2": 
      rollDice2() 
      break 
     else: 
      print("Invalid choice") 
    while True: 
     answer = input("would you like to play again? [y/n]").lower() 
     if answer == "y": 
      main() 
     elif answer == "n": 
      print ("Goodbye") 
      break 
     else: 
      print("Invalid choice") 
main() 
+0

感谢您的解决方案,我要求你解释的唯一事情就是你使用主函数,正如我所说的我仍然学习,我从来没有遇到过,它是否像任何其他功能一样工作?另外如果我想我可以加入;如果回答==“Y”或“Y”遇到,如果有人正在使用大写锁定。 – 2014-10-11 10:20:25

+0

基本上,主函数只是处理输入并根据输入调用必要的函数,while循环会一直循环直到用户输入正确的数据,当我们调用rollDice 1或2时,我们需要添加一个中断,我们得到结果并询问用户他们是否想在第二次再玩一次 – 2014-10-11 10:29:28

+0

没关系,如果“y”或“Y”我没有看到.lower( )这是一个非常聪明的主意! – 2014-10-11 10:38:30