некоторые проблемы с получением значения функций в словаре - PullRequest
0 голосов
/ 22 сентября 2018

Итак, я только начинаю на Python, но я пытаюсь реализовать функции в словарях (вроде указателей на функции в C), но я застрял на том, как получить возвращаемое значение из функции безошибка.Вот фрагмент из моего кода:

def main():
    numberOfDice = 5
    dice = rollDice(numberOfDice) #rolls dice thrice, returns a list of 5 integers
    scoreBoard(dice)   #displays Yahtzee scoreboard
    value = choice(dice)  #value = the category choice[1-13]
    whichCategory(value) 

def whichCategory(category):
    board = {
        6: numberOfSixes, # I have 1-13 filled, but just for example
        12: yahtzee       # this is just to save space.
        }
    board[category]()

def numberOfSixes(theDice):
    count = theDice.count(6)
    points = count * 6

    return points

def yahtzee(theDice):
    yahtzee = 0
    ones, twos, threes, fours, fives, sixes = countDice(theDice)
    # countDice() determines the amount that each number is present in the 
    # list and then returns those six variables.
    if any(x==5 for x in(ones, twos, threes, fours, fives, sixes)):
           yahtzee = 50

    return yahtzee

После трехкратного броска, и я заканчиваю свою игру в кости (список целых чисел), я выбираю свое значение из выбора, который идет с whichCategory (), а затем выполняетправильные вычисления, выплевывает правильное возвращаемое значение из этих функций, но тогда я получу такую ​​ошибку (для ввода в виде двух шестерок (12 баллов)):

Traceback (most recent call last):
File "C:\python\Lib\idlelib\Yahtzee.py", line 407, in <module>
main()   # My call to main()
File "C:\python\Lib\idlelib\Yahtzee.py", line 18, in main
whichCategory(value)
File "C:\python\Lib\idlelib\Yahtzee.py", line 90, in whichCategory
board[category]()
TypeError: yahtzee() missing 1 required positional argument: 'theDice

Это смешно, потому что это говоритошибка в yahtzee (), а не в шестерках, и я считаю, что это потому, что он как-то получает 12 в качестве ответа и вызывает 12-е ключевое слово в словаре.или я получу ошибку вроде:

Traceback (most recent call last):
File "C:\python\Lib\idlelib\Yahtzee.py", line 407, in <module>
main()   # My call to main()
File "C:\python\Lib\idlelib\Yahtzee.py", line 18, in main
whichCategory(value)
File "C:\python\Lib\idlelib\Yahtzee.py", line 90, in whichCategory
board[category]()
KeyError: 50

Пожалуйста, я искал ответы, но пока не нашел ни одного.Если возможно, я бы хотел вернуть значения из функций в словаре обратно в main ().Любая помощь будет оценена.

1 Ответ

0 голосов
/ 22 сентября 2018

Это не проверено, но я думаю, что проблема в том, что в строке board[category]() вы вызываете одну из своих функций, но не с нужным значением.Попробуйте внести эти изменения

def main():
    numberOfDice = 5
    dice = rollDice(numberOfDice) #rolls dice thrice, returns a list of 5 integers
    scoreBoard(dice)   #displays Yahtzee scoreboard
    value = choice(dice)  #value = the category choice[1-13]
    whichCategory(value, dice) # pass dice

def whichCategory(category, dice):  # receive dice
    board = {
        6: numberOfSixes, # I have 1-13 filled, but just for example
        12: yahtzee       # this is just to save space.
        }
    board[category](dice)   # call with dice
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...