Итак, я только начинаю на 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 ().Любая помощь будет оценена.