[Tutor] Re: IDLE crashing suddenly
jsoares at Safe-mail.net
jsoares at Safe-mail.net
Fri Apr 8 20:49:50 CEST 2005
I've noticed that after 20 or 30 compile/link/execute runs, IDLE crashes. This seems to happen pretty consistently. At the time, I'm not doing anything that might cause it to crash. Does this happen to anyone else? What causes it? Is it just a bug? I have IDLE version 1.1.1 which came with Python 2.4. Thanks. John Soares jsoares at safe-mail.net
-------- Original Message --------
From: tutor-request at python.org
Apparently from: tutor-bounces at python.org
To: tutor at python.org
Subject: Tutor Digest, Vol 14, Issue 25
Date: Fri, 8 Apr 2005 19:37:37 +0200 (CEST)
Send Tutor mailing list submissions to
tutor at python.org
To subscribe or unsubscribe via the World Wide Web, visit
http://mail.python.org/mailman/listinfo/tutor
or, via email, send a message with subject or body 'help' to
tutor-request at python.org
You can reach the person managing the list at
tutor-owner at python.org
When replying, please edit your Subject line so it is more specific
than "Re: Contents of Tutor digest..."
Today's Topics:
1. Re: Support (Alberto Troiano)
2. Recursive list checking (joe_schmoe)
3. Re: Support (Kent Johnson)
4. Re: comparison function/built-in needed (joe_schmoe)
5. Re: Recursive list checking (Jeffrey Maitland)
6. Re: Recursive list checking (Jeffrey Maitland)
7. Re: str.split and quotes (Marilyn Davis)
8. Re: Re: Recursive list checking (Kent Johnson)
9. Re: Associate functinos with Dictionary/Class Usage (Luke Jordan)
----------------------------------------------------------------------
Message: 1
Date: Fri, 08 Apr 2005 15:31:42 +0000
From: "Alberto Troiano"
Subject: Re: [Tutor] Support
To: tutor at python.org
Message-ID:
Content-Type: text/plain; charset="us-ascii"
An HTML attachment was scrubbed...
URL: http://mail.python.org/pipermail/tutor/attachments/20050408/42201ce3/attachment-0001.html
------------------------------
Message: 2
Date: Fri, 08 Apr 2005 16:55:26 +0100
From: joe_schmoe
Subject: [Tutor] Recursive list checking
To: tutor at python.org
Message-ID:
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Dear Pythonites
I am looking for a more elegant solution to a piece of code that is too
unwieldy and reptitive. The purpose of the code is for a new addition to
a list to check whether it is a duplicate of a list element already a
member of that list, and if so to regenerate itself randomly and to
perform the same check again until such time as it is unique.
For example, this is what I am currently doing:
=============code block ========================
# generate unique numbers and append to list
nmbr01 = random.randrange( 1, 20 )
nmbr_list.append( nmbr01 )
nmbr02 = random.randrange( 1, 20 )
# check for duplicates and re-generate a number if needed
while nmbr02 in nmbr_list:
nmbr02 = random.randrange( 1, 20 )
nmbr_list.append( nmbr02 )
nmbr03 = random.randrange( 1, 20 )
while nmbr03 in nmbr_list:
nmbr03 = random.randrange( 1, 20 )
nmbr.append( nmbr03 )
================================================
This method works, but increasing the numbers to be appended makes the
code excessively long. I can't see anything in list methods that seems
to do the trick, so anybody want to make a suggestion please?
TIA
/j
------------------------------
Message: 3
Date: Fri, 08 Apr 2005 11:59:24 -0400
From: Kent Johnson
Subject: Re: [Tutor] Support
Cc: tutor at python.org
Message-ID:
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Alberto Troiano wrote:
> I tried the code below but the image gets messed up:
>
> import Image
>
> im=Image.open("auto.jpg")
>
> im.show() ###This is to show the image so you can see it
>
> m=im.tostring()
>
> ima=Image.fromstring("RGB",im.size,m)###I tried also with F,RGBA
> and L mode instead of RGB
maybe ima=Image.fromstring(im.mode,im.size,m) will work...
Kent
------------------------------
Message: 4
Date: Fri, 08 Apr 2005 17:10:29 +0100
From: joe_schmoe
Subject: Re: [Tutor] comparison function/built-in needed
To: Kent Johnson
Cc: tutor at python.org
Message-ID:
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Kent Johnson wrote:
> joe_schmoe wrote:
>
>> Greetings
>>
>> I am attempting to compare the items in two lists across two criteria
>> - membership and position. For example:
>>
>> list_a = [ 0, 4, 3, 6, 8 ]
>> list_b = [ 1, 8, 4, 6, 2 ]
>>
>> Membership = There are 3 items that are common to both lists, that is
>> 3 items in list_a have membership in list_b (viz: 4, 6, 8);
>
>
> Use sets:
> >>> list_a = [ 0, 4, 3, 6, 8 ]
> >>> list_b = [ 1, 8, 4, 6, 2 ]
> >>> set(list_a).intersection(list_b)
> set([8, 4, 6])
>
>> Position = There is 1 item in list_a that is also in the same position
>> in both lists (viz: 6).
>
>
> Use zip() to iterate two lists in parallel and a list comprehension to
> accumulate the results:
> >>> [ a for a, b in zip(list_a, list_b) if a==b ]
> [6]
>
> or if you want the position of the item use enumerate() to get the index:
> >>> [ i for i, (a, b) in enumerate(zip(list_a, list_b)) if a==b ]
> [3]
>
> Kent
>
>
Hi Kent
Just to confirm: this works just great - thanks!! :)
/j
------------------------------
Message: 5
Date: Fri, 08 Apr 2005 12:11:38 -0400
From: "Jeffrey Maitland"
Subject: [Tutor] Re: Recursive list checking
To: tutor at python.org
Message-ID:
Content-Type: text/plain; format=flowed; charset="iso-8859-1"
joe_schmoe writes:
> Dear Pythonites
>
> I am looking for a more elegant solution to a piece of code that is too
> unwieldy and reptitive. The purpose of the code is for a new addition to a
> list to check whether it is a duplicate of a list element already a member
> of that list, and if so to regenerate itself randomly and to perform the
> same check again until such time as it is unique.
> For example, this is what I am currently doing:
>
> =============code block ========================
>
> # generate unique numbers and append to list
> nmbr01 = random.randrange( 1, 20 )
> nmbr_list.append( nmbr01 )
>
> nmbr02 = random.randrange( 1, 20 )
> # check for duplicates and re-generate a number if needed
> while nmbr02 in nmbr_list:
> nmbr02 = random.randrange( 1, 20 )
> nmbr_list.append( nmbr02 )
>
> nmbr03 = random.randrange( 1, 20 )
> while nmbr03 in nmbr_list:
> nmbr03 = random.randrange( 1, 20 )
> nmbr.append( nmbr03 )
>
> ================================================
>
> This method works, but increasing the numbers to be appended makes the
> code excessively long. I can't see anything in list methods that seems to
> do the trick, so anybody want to make a suggestion please?
>
> TIA
> /j
> _______________________________________________
> Tutor maillist - Tutor at python.org
> http://mail.python.org/mailman/listinfo/tutor
Well I would start by doing something like.
nmbr_list = []
value = int(raw_input("Input the number of items you wish to generate"))
for i in range(value):
if i == 0:
nmbr = random.randrange( 1, 20 )
nmbr_list.append( nmbr01 )
else:
nmbr = random.randrange( 1, 20 )
# check for duplicates and re-generate a number if needed
while nmbr in nmbr_list:
nmbr = random.randrange( 1, 20 )
nmbr_list.append( nmbr )
I hope that helps. or gives you an idea.
Jeff
------------------------------
Message: 6
Date: Fri, 08 Apr 2005 12:17:40 -0400
From: "Jeffrey Maitland"
Subject: [Tutor] Re: Recursive list checking
To: "Jeffrey Maitland"
Cc: tutor at python.org
Message-ID:
Content-Type: text/plain; format=flowed; charset="iso-8859-1"
Jeffrey Maitland writes:
> joe_schmoe writes:
>
>> Dear Pythonites
>>
>> I am looking for a more elegant solution to a piece of code that is too
>> unwieldy and reptitive. The purpose of the code is for a new addition to
>> a list to check whether it is a duplicate of a list element already a
>> member of that list, and if so to regenerate itself randomly and to
>> perform the same check again until such time as it is unique.
>> For example, this is what I am currently doing:
>>
>> =============code block ========================
>>
>> # generate unique numbers and append to list
>> nmbr01 = random.randrange( 1, 20 )
>> nmbr_list.append( nmbr01 )
>>
>> nmbr02 = random.randrange( 1, 20 )
>> # check for duplicates and re-generate a number if needed
>> while nmbr02 in nmbr_list:
>> nmbr02 = random.randrange( 1, 20 )
>> nmbr_list.append( nmbr02 )
>>
>> nmbr03 = random.randrange( 1, 20 )
>> while nmbr03 in nmbr_list:
>> nmbr03 = random.randrange( 1, 20 )
>> nmbr.append( nmbr03 )
>>
>> ================================================
>>
>> This method works, but increasing the numbers to be appended makes the
>> code excessively long. I can't see anything in list methods that seems to
>> do the trick, so anybody want to make a suggestion please?
>>
>> TIA
>> /j
>> _______________________________________________
>> Tutor maillist - Tutor at python.org
>> http://mail.python.org/mailman/listinfo/tutor
>
> Well I would start by doing something like.
>
> nmbr_list = []
> value = int(raw_input("Input the number of items you wish to generate"))
>
> for i in range(value):
> if i == 0:
> nmbr = random.randrange( 1, 20 )
> nmbr_list.append( nmbr01 )
> else:
> nmbr = random.randrange( 1, 20 )
> # check for duplicates and re-generate a number if needed
> while nmbr in nmbr_list:
> nmbr = random.randrange( 1, 20 )
> nmbr_list.append( nmbr )
>
> I hope that helps. or gives you an idea.
> Jeff
>
> _______________________________________________
> Tutor maillist - Tutor at python.org
> http://mail.python.org/mailman/listinfo/tutor
Err just noted that I screwed up on my idea.. here.. is a better party same
idea edited some.
nmbr_list = []
value = int(raw_input("Input the number of items you wish to generate"))
# so this loops the value specified times, as this will add that number to
list too. so a range of 1 - 20 in random order if 20 is the sepcified
number.
for i in range(value):
if i == 0:
nmbr = random.randrange( 1, value )
nmbr_list.append( nmbr )
else:
nmbr = random.randrange( 1, value )
# check for duplicates and re-generate a number if needed
while nmbr in nmbr_list:
nmbr = random.randrange( 1, value )
nmbr_list.append( nmbr )
Jeff
also feel free to ask me more speicifc questions via email if you think they
won't help the cominity at all.
------------------------------
Message: 7
Date: Fri, 8 Apr 2005 09:16:30 -0700 (PDT)
From: Marilyn Davis
Subject: Re: [Tutor] str.split and quotes
To: Kent Johnson
Cc: tutor at python.org
Message-ID:
Content-Type: TEXT/PLAIN; charset=US-ASCII
On Fri, 8 Apr 2005, Kent Johnson wrote:
> Marilyn Davis wrote:
> > Is there a reason to prefer one over the other? Is one faster? I
> > compiled my regular expression to make it quicker.
>
> The only way to know which is faster is to time them both. The timeit module makes it pretty easy to
> do this.
>
> Here is a simple example of using timeit for a different problem; you can adapt it to your own needs:
Thank you so much again.
This will be handy.
Marilyn
>
> d = dict( ((i,i,i), i) for i in range(1000))
>
> def withItems(d):
> for k,v in d.iteritems():
> pass
>
>
> def withKeys(d):
> for k in d:
> d[k]
>
>
> from timeit import Timer
>
> for fn in [withItems, withKeys]:
> name = fn.__name__
> timer = Timer('%s(d)' % name, 'from __main__ import d, %s' % name)
> print name, timer.timeit(1000)
>
>
> Kent
>
> _______________________________________________
> Tutor maillist - Tutor at python.org
> http://mail.python.org/mailman/listinfo/tutor
>
--
------------------------------
Message: 8
Date: Fri, 08 Apr 2005 13:26:30 -0400
From: Kent Johnson
Subject: Re: [Tutor] Re: Recursive list checking
Cc: tutor at python.org
Message-ID:
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Jeffrey Maitland wrote:
> joe_schmoe writes:
>
>> Dear Pythonites
>> I am looking for a more elegant solution to a piece of code that is
>> too unwieldy and reptitive. The purpose of the code is for a new
>> addition to a list to check whether it is a duplicate of a list
>> element already a member of that list, and if so to regenerate itself
>> randomly and to perform the same check again until such time as it is
>> unique.
>> For example, this is what I am currently doing:
>> =============code block ========================
>> # generate unique numbers and append to list
>> nmbr01 = random.randrange( 1, 20 )
>> nmbr_list.append( nmbr01 )
>> nmbr02 = random.randrange( 1, 20 )
>> # check for duplicates and re-generate a number if needed
>> while nmbr02 in nmbr_list:
>> nmbr02 = random.randrange( 1, 20 )
>> nmbr_list.append( nmbr02 )
>> nmbr03 = random.randrange( 1, 20 )
>> while nmbr03 in nmbr_list:
>> nmbr03 = random.randrange( 1, 20 )
>> nmbr.append( nmbr03 )
>> ================================================
>> This method works, but increasing the numbers to be appended makes the
>> code excessively long. I can't see anything in list methods that seems
>> to do the trick, so anybody want to make a suggestion please?
>> TIA
>> /j
>> _______________________________________________
>> Tutor maillist - Tutor at python.org
>> http://mail.python.org/mailman/listinfo/tutor
>
>
> Well I would start by doing something like.
> nmbr_list = []
> value = int(raw_input("Input the number of items you wish to generate"))
> for i in range(value):
> if i == 0:
> nmbr = random.randrange( 1, 20 )
> nmbr_list.append( nmbr01 )
> else:
> nmbr = random.randrange( 1, 20 )
> # check for duplicates and re-generate a number if needed
> while nmbr in nmbr_list:
> nmbr = random.randrange( 1, 20 )
> nmbr_list.append( nmbr )
> I hope that helps. or gives you an idea.
The special case for i==0 is not needed, in this case the test for nmbr in nmbr_list will fail and
nmbr will be added to the list.
But if you are trying to get n random elements from range(m) you are probably better off using
random.sample(), I think it does exactly what you want:
>>> random.sample(xrange(10000000), 10)
[274075, 2925710, 7715591, 8236811, 1161108, 5804222, 2385884, 9236087, 5603149, 8473299]
If you actually want *all* elements of the range in random order, use random.shuffle():
>>> l=range(20)
>>> random.shuffle(l)
>>> l
[13, 7, 6, 9, 3, 10, 1, 8, 4, 0, 18, 12, 11, 17, 19, 5, 16, 15, 2, 14]
You might also want to look at random.choice()...
Kent
------------------------------
Message: 9
Date: Fri, 8 Apr 2005 10:37:29 -0700
From: Luke Jordan
Subject: Re: [Tutor] Associate functinos with Dictionary/Class Usage
To: Danny Yoo
Cc: tutor at python.org
Message-ID:
Content-Type: text/plain; charset=ISO-8859-1
Yes, Danny - that makes sense. I was getting hung up how to handle the
parens in this part
dict['some'](thing)
all clear now.
:-)
On Apr 7, 2005 4:40 PM, Danny Yoo wrote:
>
>
> On Thu, 7 Apr 2005, Luke Jordan wrote:
>
> > I am looking for a little clarification of how exactly this would work.
> >
> > 1. How do I associate a function to a dict key?
>
> Hi Luke,
>
> We're probably already familiar of values like numbers and strings, and
> how to give them names with variables:
>
> ######
> >>> number = 42
> >>> name = "luke"
> >>> number
> 42
> >>> name
> 'luke'
> ######
>
> 'number' is a name that refers to the value 42, and 'name' is a name (Doh!
> I must use a better variable name next time...) that refers to the value
> "luke".
>
> And we also already know how to make functions and to call them:
>
> ######
> >>> def square(x):
> ... return x * x
> ...
> >>> square(42)
> 1764
> ######
>
> But what happens if we just say "square" at the interpreter?
>
> ######
> >>> square
>
> ######
>
> The value of 'square' is a function value.
>
> And just like any other value, we can assign it to another name:
>
> ######
> >>> anotherNameForSquare = square
> >>> anotherNameForSquare(16)
> 256
> ######
>
> And just like any other value, we can use it as a dictionary value:
>
> ######
> >>> operators = {'^2': square}
> >>> operators['^2']
>
> >>> operators['^2'](4)
> 16
> ######
>
> Does this make sense so far? Please feel free to ask more questions about
> this. Best of wishes!
>
>
--
"Scalpel....blood bucket....priest....next patient."
------------------------------
_______________________________________________
Tutor maillist - Tutor at python.org
http://mail.python.org/mailman/listinfo/tutor
End of Tutor Digest, Vol 14, Issue 25
*************************************
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.python.org/pipermail/tutor/attachments/20050408/4e9a3581/attachment-0001.htm
More information about the Tutor
mailing list