Сумма двух чисел с максимальным значением по умолчанию, которое не может быть превышено - PullRequest
1 голос
/ 05 марта 2020

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

Например, учитывая максимальное значение 100 и функцию, которая делает это, которая называется maxadd:

input1 = 90
input2 = 8
maxadd(input1, input2, 100)
>>> 98

input1 = 95
input2 = 8
maxadd(input1, input2, 100)
>>> 100

Я мог бы просто определить ее как нормальную функцию, например:

def maxadd(a, b, _max):
    res = a + b
    if res > _max:
        return _max
    return res

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

Ответы [ 3 ]

8 голосов
/ 05 марта 2020

Вы можете использовать min(a + b, max_value).

6 голосов
/ 05 марта 2020

Логически вы хотите вернуть либо a + b, либо _max, в зависимости от того, что меньше. Таким образом, вы можете использовать встроенную функцию min для этого:

def maxadd(a, b, _max):
    return min(a + b, _max)
2 голосов
/ 05 марта 2020

Если вы хотите использовать лямбду:

 f = lambda a, b, max_: min(a + b, max_)

Например:

f(90, 8, 100)

98

f(95, 8, 100)

100

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