[Tutor] range question

Dave Angel d at davea.name
Thu Sep 22 16:56:57 CEST 2011


On 09/22/2011 10:43 AM, Hugo Arts wrote:
> forgot to forward to list:
>
> From: Hugo Arts<hugo.yoshi at gmail.com>
> Date: Thu, Sep 22, 2011 at 4:42 PM
> Subject: Re: [Tutor] range question
> To: d at davea.name
>
>
> On Thu, Sep 22, 2011 at 4:37 PM, Dave Angel<d at davea.name>  wrote:
>> On 09/22/2011 10:27 AM, Joel Knoll wrote:
>>
>> Given a range of integers (1,n), how might I go about printing them in the
>> following patterns:
>> 1 2 3 4 ... n2 3 4 5 ... n 13 4 5 6 ... n 1 2
>> etc., e.g. for a "magic square". So that for the range (1,5) for example I
>> would get
>> 1 2 3 42 3 4 13 4 1 24 1 2 3
>> I just cannot figure out how to make the sequence "start over" within a row,
>> i.e. to go from 4 down to 1 in this example.
>> I have been grappling with this problem for 2.5 days and have gotten
>> nowhere!
>>
>> _______________________________________________
>> Tutor maillist  -  Tutor at python.org
>> To unsubscribe or change subscription options:
>> http://mail.python.org/mailman/listinfo/tutor
>>
>> Seems like the easiest way would be to duplicate the range once (so you have
>> a list twice as long), and then use various slices of it.
>>
>> x = list(range(1, 5))   #could omit the list() function in python 2.x
>> x2 = x+x
>>
>> for the nth row, use
>>     row = x2[n:n+n]
>>
> Surely you meant to type:
>
> x = list(range(1, 6))
> x2 = x + x
> row  = x[n:n+len(x)]
>

The second correction is important, the first one wrong.  The OP's 
example was looking for the numbers 1 through 4, so range(1,5) was correct.
-- 

DaveA



More information about the Tutor mailing list