for循环基于“ n”在“ x”周围创建一个列表

时间:2019-05-16 18:09:51

标签: python python-3.x loops range

基本上试图弄清楚如何创建一个for循环,该循环基于“ n”在主数字“ x”周围生成一个范围

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 个答案:

答案 0 :(得分:3)

根据the docsrange可以接受两个参数,它们指定间隔的开始(包括)和结束(不包括)。因此,您可以获得[start, stop)形式的间隔。

您要创建间隔[Actual - n, Actual + n],因此请记住将range 排除该范围内的第二个参数,几乎将其转换为Python您应该在其中添加一个:

>>> list(range(Actual - n, Actual + n + 1))
[5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]

答案 1 :(得分:1)

ForceBru已经显示了针对您问题的pythonic解决方案。我只想补充说,经过一些细微调整,您的原始代码可以正常工作:

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