2014-10-11 2 views
0

[Solved] Это была глупая опечатка. Сожалею.Python Dice Ошибка игры

В настоящее время я изучаю 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

+0

Спасибо, я думаю, что его время ложиться спать, это проблемы из-за этого? –

+0

Кроме того, я думаю, вы должны определить свои методы раньше, прежде чем называть их. И используйте основной метод для их проверки. –

ответ

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

Спасибо за ваше решение. Единственное, что я попрошу объяснить, это использование вами основной функции, как я уже сказал, я все еще и я никогда раньше не сталкивался с этим, не работает ли он, как любая другая функция? Также, если бы я хотел, я мог бы добавить; если answer == "y" или "Y", если кто-то использует блокировку caps. –

+0

в основном основная функция просто обрабатывает ввод и вызывает необходимые функции на основе ввода, циклы while будут продолжать цикл до тех пор, пока пользователь не вводит правильные данные, когда мы вызываем rollDice 1 или 2, нам нужно добавить разрыв после того, как мы сломаемся из первого цикла после того, как мы получим результат и спросим пользователя, хотят ли они снова играть во втором –

+0

Не обращайте внимания на вопрос о том, могу ли я его изменить, если «y» или «Y» я не видел .lower () Это действительно умная идея! –