Параметр в Python - PullRequest
       40

Параметр в Python

0 голосов
/ 20 октября 2010

Допустим, есть параметр n. Может ли n быть любым числом? Например, такой вопрос: если задано неотрицательное число num, верните True, если num находится в пределах 2 от кратного 10. Это то, что я думаю:

def near_ten(num):
    n = int #So I assume n can be any integer
    if abs(num - n*10) <=2:
        return True
    Return False

Однако есть две проблемы. Во-первых, в n*10, * это неподдерживаемый тип операнда, потому что я думал, что смогу использовать Python в качестве калькулятора. Во-вторых, я не могу просто сказать n = int, тогда n можно рассматривать как переменную как любое число (или целое число) в математической функции. Если бы я мог так использовать n, то жизнь была бы намного проще.

Наконец, я понял это другим способом, который не включает «n» в качестве параметра:

def near_ten(num):

if num%10<=2:
    return True
if (num+2)%10<=2:
    return True
return False

Однако мне все еще любопытно, что в качестве параметра, упомянутого ранее, "n". Так как я только начинающий, это действительно сбивает с толку.

Ответы [ 3 ]

1 голос
/ 20 октября 2010

В Python int является типом. Типы являются первоклассными объектами в Python и могут быть связаны с именами. Конечно, пытаться умножить тип на число обычно бессмысленно, поэтому операция не определена по умолчанию. На него можно ссылаться по новому имени.

n = int
print(n(3.4))
print(n('10') == 10)
0 голосов
/ 20 октября 2010

Вот гораздо более простое решение:

def near_mult_ten(num):
    return abs(num - (num+5) // 10 * 10) <= 2

Редактировать: Исправлено.

0 голосов
/ 20 октября 2010

Я не уверен, запускали ли вы свой код или нет, но python является интерпретируемым языком высокого уровня, python МОЖЕТ различать типы переменных, и поэтому вам не нужно явно объявлять их, ваш заголовок функции действителен. Вы также можете выполнять операции между целыми числами и числами с плавающей запятой / двойниками без необходимости приведения, python уже справится с этим для вас

Ваша функция выдаст ошибку в любом компиляторе, объявлена ​​переменная ur n, вы определили ее, но не инициализировали

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