Функция Python не работает - PullRequest
       2

Функция Python не работает

0 голосов
/ 11 февраля 2012

Я изучаю Python, и я дошел до главы о функциях, и я написал код для одного:

import random

def roll(sides, dice):
    result = 0
    for rolls in range(0,dice):
        result += random.randint(1, sides)
    return result

, но, когда я пытаюсь войти в функцию, это появляется

Traceback (most recent call last):


File "<pyshell#16>", line 1, in <module>
    roll ()
TypeError: roll() takes exactly 2 positional arguments (0 given)

Ответы [ 4 ]

5 голосов
/ 11 февраля 2012

Ваша функция ожидает два аргумента.Вам нужно передать значение для sides, а другое для dice.

Таким образом, пример правильного вызова вашей функции будет выглядеть следующим образом:

roll(1,3)

OfКонечно, иногда вы хотите, чтобы ваша функция имела аргументы по умолчанию.Другими словами, вы хотите иметь возможность вызывать вашу функцию без каких-либо явных аргументов.Для этого вы добавляете значение по умолчанию для аргумента в определение вашей функции.Предположим, вы хотите, чтобы функция по умолчанию действовала как обычный кубик.Все, что вам нужно сделать, это:

def roll(sides = 6, dice = 1)

С этой функцией вызов, такой как roll(), будет предполагать, что вы передаете 6 и 1 в качестве аргументов.Конечно, вы всегда можете вызвать вашу функцию с аргументами, и она заменит значения по умолчанию.

TL; DR: Либо передайте аргументы, определите аргументы по умолчанию, либои.

1 голос
/ 14 февраля 2012

Вам нужно ввести числа между ().Лайк ролл (3, 1)

1 голос
/ 11 февраля 2012
>>> import random
>>> def roll(sides, dice):
...     result = 0
...     for rolls in range(0,dice):
...         result += random.randint(1, sides)
...     return result
... 
>>> roll(6, 8)
23

Вы также можете установить значения по умолчанию:

>>> import random
>>> def roll(sides = 6, dice = 2):
...     result = 0
...     for rolls in range(0,dice):
...         result += random.randint(1, sides)
...     return result
... 
>>> roll()
10
1 голос
/ 11 февраля 2012

Функция ожидает два аргумента, как в

twoDice = roll(6, 2)

или

nineCoinFlips = roll(2, 9)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...