Включить верхнюю границу в диапазон () - PullRequest
4 голосов
/ 07 мая 2010

Как включить верхнюю границу в функцию range ()?Я не могу добавить 1, потому что мой цикл for выглядит следующим образом:

for x in range(1,math.floor(math.sqrt(x))):
    y = math.sqrt(n - x * x)

Но, насколько я понимаю, это будет 1 < x < M там, где мне нужно 1 < x <= M Добавление 1 полностью изменит результат.Я пытаюсь переписать мою старую программу с C # на Python.Вот как это выглядело в C #:

for (int x = 1; x <= Math.Floor(Math.Sqrt(n)); x++)
    double y = Math.Sqrt(n - x * x);

Ответы [ 2 ]

5 голосов
/ 07 мая 2010

Просто добавьте один ко второму аргументу вашей функции диапазона:

range(1,math.floor(math.sqrt(x))+1)

Вы также можете использовать это:

range(math.floor(math.sqrt(x)))

и затем добавьте один в свой цикл. Однако первый будет быстрее.

В качестве дополнительного примечания, если вы не работаете с Python 3, вы должны использовать xrange вместо range, для идиомы / эффективности. Более идиотски, вы могли бы также позвонить int вместо math.floor.

4 голосов
/ 07 мая 2010

Почему вы просто не можете просто добавить один к верхней границе вашего range вызова?

Кроме того, похоже, что вы хотите сослаться на n в первой строке, т. Е .:

for x in range(1,math.floor(math.sqrt(n)) + 1):

... при условии, что вы хотите иметь то же поведение, что и ваш фрагмент кода C #.

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