цикл for создайте список вокруг «x» на основе «n» - PullRequest
0 голосов
/ 16 мая 2019

В основном пытаемся выяснить, как создать цикл for, который генерирует диапазон вокруг основного числа «x» на основе «n»

x = 10                  # x = Actual
n = 5

потому что

Actual = input("What's the Actual")  # Enter 10
Target = input("What's the Target")  # Enter 15



n = Target - Actual  # 5 = 15 - 10

Поскольку фактическим является 10

Хотелось бы увидеть ..

5, 6, 7, 8, 9 , 10, 11, 12, 13, 14, 15 

Код:

n = 2
def price(sprice):
     for i in range(n*2):
        sprice = sprice + 1
        print(sprice)

price(200)

Этот код показывает 201,202,203,204, а фактическое значение равно 200. Я хочу видеть 198,199,200,201,202, потому что n = 2 и когда умножить на 2 = 4, который показывает диапазон 4 значений около 200

Ответы [ 2 ]

3 голосов
/ 16 мая 2019

Согласно документы , range могут принимать два аргумента, которые указывают начало (включительно) и конец (исключая) интервала.Таким образом, вы можете получить интервал в виде [start, stop).

Вы хотели бы создать интервал [Actual - n, Actual + n], поэтому просто переведите его почти буквально в Python, учитывая, что range исключает второй аргумент из этого диапазона, поэтому вам следуетдобавить один к этому:

>>> list(range(Actual - n, Actual + n + 1))
[5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
1 голос
/ 16 мая 2019

ForceBru уже показал питонное решение вашей проблемы. Я только хочу добавить, что ваш оригинальный код работает как задумано после некоторых незначительных изменений:

n = 2
def price(sprice):
    sprice -= n # short way to say: sprice = sprice - n
    for i in range(n*2+1): # +1 required as in 1-argument range it is exclusive
        sprice = sprice + 1
        print(sprice)
price(200)

Выход:

199
200
201
202
203

Обратите внимание, что Python распознает *, который должен быть выполнен до + независимо от его порядка. Следовательно, вы можете написать 1+n*2 вместо n*2+1.

...