[Tutor] regarding the list problem

2013-02-06 Thread Kang, Yang Jae
Hello

 

I'm a beginner to python. I ran following code and expected [[1, 0], [0, 0],
[0, 0]]

However unexpected result came up. Anybody who can teach me why and how to
solve?

 

Python 3.2.3 (default, May 19 2012, 23:34:41) 

[GCC 4.4.3] on linux2

Type "help", "copyright", "credits" or "license" for more information.

>>> [1] *3

[1, 1, 1]

>>> [[0,0]]*3

[[0, 0], [0, 0], [0, 0]]

>>> a = [[0,0]]*3

>>> a

[[0, 0], [0, 0], [0, 0]]

>>> a[0][0] += 1

>>> a

[[1, 0], [1, 0], [1, 0]]

 

Kang, Yang Jae 

Ph.D.

Cropgenomics Lab.

College of Agriculture and Life Science

Seoul National University 

Korea

 

___
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] help with running perl script that writes to a text file

2013-02-06 Thread Peter Otten
3n2 Solutions wrote:

> Hello,
> 
> I want to automate the following manual process from DOS promp:
> 
> c:/scripts/perl>perl fix.pl base.gtx >base.txt
> 
> Here is my python script:
> 
> path="c:/scripts/perl/"
> subprocess.call(['perl','fix.pl','base.gtx >base.txt',path])
> 
> I also tried this alternative:
> 
> subprocess.Popen(['perl','fix.pl','base.gtx >base.txt',path]) #same
> result from this method.
> 
> The above script generates the base.txt file but has no content in it.
> 
> any ideas as to why the resulting text file is empty? Am I using the
> correct python commands to run the above manual process?

I'm surprised that base.txt is generated at all, I'd expect fix.pl to look 
for a file named "base.gtx >base.txt" and complain when it doesn't find 
that.

I think the following should work:

with open("c:/scripts/perl/base.txt", "w") as f:
subprocess.check_call(
["perl", 
 "c:/scripts/perl/fix.pl", 
 "c:/scripts/perl/base.gtx"], 
stdout=f)



___
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] help with running perl script that writes to a text file

2013-02-06 Thread eryksun
On Tue, Feb 5, 2013 at 6:44 PM, 3n2 Solutions <3n2soluti...@gmail.com> wrote:
>
> I want to automate the following manual process from DOS promp:

I agree with Peter's answer. I'd just like to add a generally useless
and pedantic comment about the habit of saying "DOS prompt". The cmd
shell is a Win32 console application, unlike DOS command.com. On
64-bit Windows there isn't even a virtual DOS machine (NTVDM) to run
command.com. There, I feel better now. :)
___
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] regarding the list problem

2013-02-06 Thread Hugo Arts
On Wed, Feb 6, 2013 at 9:48 AM, Kang, Yang Jae wrote:

This line:


> >>> a = [[0,0]]*3
>

creates a list, a, which contains the list object [0, 0] three times.
What's crucial to note is that it contains *the same object* three times,
not three different objects with the same value. You can verify this
yourself, with the id() function:

>>> a = [[0,0]] * 3
>>> a
[[0, 0], [0, 0], [0, 0]]
>>> id(a[0]), id(a[1]), id(a[2])
(41087144, 41087144, 41087144)
>>>

All three have the same id, therefore all three point to one and the same
object.

> >>> a
>
> [[0, 0], [0, 0], [0, 0]]
>
> >>> a[0][0] += 1
>
> >>> a
>
> [[1, 0], [1, 0], [1, 0]]
>
It should not be so strange, now, that if you modify a[0], this
modification will be reflected in a[1] and a[2] as well, since those are
all the same object.

Now, this can happen with lists, because they are mutable. If we do the
same with integers:

>>> a = [1] * 3
>>> a
[1, 1, 1]
>>> id(a[0]), id(a[1]), id(a[2])
(3779904, 3779904, 3779904)
>>> a[0] += 1
>>> a
[2, 1, 1]
>>>

You get the expected behaviour now, even though the list again contained
the same object three times. This is because integers are *immutable*,
meaning you cannot change them. So this line:

>>> a[0] += 1

did not modify the object, but created another integer object, with value
2, and assigned that to a[0]. The conclusion is that you should always be
mindful of whether your objects are mutable or not, and you should
understand what actually happens when you multiply a list by a constant, to
avoid these kinds of problems. In this case, what you wanted to do was
create three list objects with value [0, 0], not just the one. You may
either generate them with a loop or list comprehension, or simply write the
list out in its entirety:

>>> a = [[0,0] for i in range(3)]
>>> id(a[0]), id(a[1]), id(a[2])
(4070896, 41087984, 41061792)
>>> a = [[0, 0], [0, 0], [0, 0]]
>>> id(a[0]), id(a[1]), id(a[2])
(41087944, 41087824, 41069624)
>>>

This way, the lists are actually three different lists and not just the
same object three times (as you can see, they have different id's)

HTH,
Hugo
___
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor


[Tutor] recursive function password check

2013-02-06 Thread Mara Kelly
Hi everyone, trying to write a program that has the user enter a password, 
checks if it contains any vowels, and if it does prints ' It is false that 
password(whatever the user enters) has no vowels,' and if it has no vowels 
prints it is True that password has no vowels...
Here is what I have so far...def password(y):    vowels=["a","e","i","o"]    if 
y[0] in vowels:        return False    if len(y) ==0:        return True    
elif(y[len(y)-1] != vowels):        return False    else:        return 
password(y[1:len(y)-1])x=input("Enter a password:")print("It is", 
password(x),"that",x,"has no vowles")
As of now it just asks for the password, and then prints 'It is False that 
password(whatever was entered) has no vowles' for any word I enter. I think 
maybe some of my if statement conditions may be being returned to the function, 
but then not printing the appropriate one? Can anyone help? Thanks!___
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] recursive function password check

2013-02-06 Thread Hugo Arts
On Wed, Feb 6, 2013 at 1:44 PM, Mara Kelly  wrote:

> Hi everyone, trying to write a program that has the user enter a password,
> checks if it contains any vowels, and if it does prints ' It is false that
> password(whatever the user enters) has no vowels,' and if it has no vowels
> prints it is True that password has no vowels...
>
> Here is what I have so far...
>
def password(y):
> vowels=["a","e","i","o"]
> if y[0] in vowels:
> return False
> if len(y) ==0:
> return True
> elif(y[len(y)-1] != vowels):
> return False
> else:
> return password(y[1:len(y)-1])
> x=input("Enter a password:")
> print("It is", password(x),"that",x,"has no vowles")
>
>
Okay, it looks to me like you are inspecting the first and last characters
in the string, returning False if some condition is met for each, and
otherwise you chop them off and call recursively on the resulting string.
 So here's a question for you: For the first character, you check if y[0]
in vowels. But for the last character, you check if y[len(y) - 1] !=
vowels. Why did you use "in" for the first test, and "!=" for the second?

By the way, here's a related tip: in Python, negative indexes will work
from the back of the sequence. So y[-1] is the last element, y[-2] the
second to last, et cetera.

HTH,
Hugo
___
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] recursive function password check

2013-02-06 Thread Simon Yan
On Wed, Feb 6, 2013 at 9:44 PM, Mara Kelly  wrote:

> Hi everyone, trying to write a program that has the user enter a password,
> checks if it contains any vowels, and if it does prints ' It is false that
> password(whatever the user enters) has no vowels,' and if it has no vowels
> prints it is True that password has no vowels...
>
> Here is what I have so far...
> def password(y):
> vowels=["a","e","i","o"]
> if y[0] in vowels:
> return False
> if len(y) ==0:
> return True
> elif(y[len(y)-1] != vowels):
> return False
> else:
> return password(y[1:len(y)-1])
> x=input("Enter a password:")
> print("It is", password(x),"that",x,"has no vowles")
>
> As of now it just asks for the password, and then prints 'It is False that
> password(whatever was entered) has no vowles' for any word I enter. I think
> maybe some of my if statement conditions may be being returned to the
> function, but then not printing the appropriate one? Can anyone help?
> Thanks!
>
It appears that the issue is from this:

elif(y[len(y)-1] != vowels):

This condition will be true because you are comparing a string with a list.
Thus causing passwrod() returning False.


>
> ___
> Tutor maillist  -  Tutor@python.org
> To unsubscribe or change subscription options:
> http://mail.python.org/mailman/listinfo/tutor
>
>


-- 
Regards,
YeeYaa (Simon Yan)

http://simonyan.fedorapeople.org/
___
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] recursive function password check

2013-02-06 Thread Noriko Tani
Hi Mara,

Several suggestions:

Put the password in a list, then loop each letter to check if it is a vowel 
like this

password=[]
vowels=['a','e','i','o','u']#in your message, u is missing, BTW
password=input("Enter a password:")

for p in password:
if p in vowels:
return True  #I would use print("the message that you want to 
display") though.
else:
return False

And how about error handling?  You put
if len(y) ==0:
return True  #I would use print("woops! You did not enter 
anything.") and add break

Does this password case sensitive?  If so, add AEIOU in vowels list.

Good luck!

Noriko


From: Tutor [mailto:tutor-bounces+noriko.tani=tomtom@python.org] On Behalf 
Of Simon Yan
Sent: Wednesday, February 06, 2013 9:11 AM
To: Mara Kelly
Cc: tutor@python.org
Subject: Re: [Tutor] recursive function password check



On Wed, Feb 6, 2013 at 9:44 PM, Mara Kelly 
mailto:schooluse1...@yahoo.com>> wrote:
Hi everyone, trying to write a program that has the user enter a password, 
checks if it contains any vowels, and if it does prints ' It is false that 
password(whatever the user enters) has no vowels,' and if it has no vowels 
prints it is True that password has no vowels...

Here is what I have so far...
def password(y):
vowels=["a","e","i","o"]
if y[0] in vowels:
return False
if len(y) ==0:
return True
elif(y[len(y)-1] != vowels):
return False
else:
return password(y[1:len(y)-1])
x=input("Enter a password:")
print("It is", password(x),"that",x,"has no vowles")

As of now it just asks for the password, and then prints 'It is False that 
password(whatever was entered) has no vowles' for any word I enter. I think 
maybe some of my if statement conditions may be being returned to the function, 
but then not printing the appropriate one? Can anyone help? Thanks!

It appears that the issue is from this:

elif(y[len(y)-1] != vowels):

This condition will be true because you are comparing a string with a list. 
Thus causing passwrod() returning False.


___
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor



--
Regards,
YeeYaa (Simon Yan)

http://simonyan.fedorapeople.org/
___
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] recursive function password check

2013-02-06 Thread Dave Angel

On 02/06/2013 09:26 AM, Noriko Tani wrote:

Hi Mara,

Several suggestions:

Put the password in a list, then loop each letter to check if it is a vowel 
like this


No need to make it a list, strings are already iterable.  And you don't 
make it a list in the code, just in the remark above.




password=[]
vowels=['a','e','i','o','u']#in your message, u is missing, BTW
password=input("Enter a password:")

for p in password:


This loop goes around exactly once, since you return no matter what.


 if p in vowels:
 return True  #I would use print("the message that you want to 
display") though.


Shouldn't mix "calculation" and "output" unless it's just for play.


 else:
 return False


This return should be dedented to line up with the for statement, so it 
only executes if none of the earlier characters was a vowel.


And how about error handling?  You put
 if len(y) ==0:
 return True  #I would use print("woops! You did not enter 
anything.") and add break


But in the OP's code, this return is triggered on any string with no 
vowels.  Note, the function is recursive, and this is the only final 
exit condition.




Does this password case sensitive?  If so, add AEIOU in vowels list.

Good luck!

Noriko


From: Tutor [mailto:tutor-bounces+noriko.tani=tomtom@python.org] On Behalf 
Of Simon Yan
Sent: Wednesday, February 06, 2013 9:11 AM
To: Mara Kelly
Cc: tutor@python.org
Subject: Re: [Tutor] recursive function password check



On Wed, Feb 6, 2013 at 9:44 PM, Mara Kelly 
mailto:schooluse1...@yahoo.com>> wrote:
Hi everyone, trying to write a program that has the user enter a password, 
checks if it contains any vowels, and if it does prints ' It is false that 
password(whatever the user enters) has no vowels,' and if it has no vowels 
prints it is True that password has no vowels...

Here is what I have so far...
def password(y):
 vowels=["a","e","i","o"]
 if y[0] in vowels:
 return False
 if len(y) ==0:
 return True
 elif(y[len(y)-1] != vowels):
 return False
 else:
 return password(y[1:len(y)-1])
x=input("Enter a password:")
print("It is", password(x),"that",x,"has no vowles")

As of now it just asks for the password, and then prints 'It is False that 
password(whatever was entered) has no vowles' for any word I enter. I think 
maybe some of my if statement conditions may be being returned to the function, 
but then not printing the appropriate one? Can anyone help? Thanks!

It appears that the issue is from this:

elif(y[len(y)-1] != vowels):

This condition will be true because you are comparing a string with a list. 
Thus causing passwrod() returning False.


___
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor



--
Regards,
YeeYaa (Simon Yan)

http://simonyan.fedorapeople.org/



___
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor




--
DaveA
___
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] recursive function password check

2013-02-06 Thread Dave Angel

On 02/06/2013 08:44 AM, Mara Kelly wrote:

Hi everyone, trying to write a program that has the user enter a password, 
checks if it contains any vowels, and if it does prints ' It is false that 
password(whatever the user enters) has no vowels,' and if it has no vowels 
prints it is True that password has no vowels...
Here is what I have so far...def password(y):vowels=["a","e","i","o"]if y[0] in vowels:return False
if len(y) ==0:return Trueelif(y[len(y)-1] != vowels):return Falseelse:return password(y[1:len(y)-1])x=input("Enter a 
password:")print("It is", password(x),"that",x,"has no vowles")
As of now it just asks for the password, and then prints 'It is False that 
password(whatever was entered) has no vowles' for any word I enter. I think 
maybe some of my if statement conditions may be being returned to the function, 
but then not printing the appropriate one? Can anyone help? Thanks!





Please don't post in html email. It can seriously mess up your columns. 
 In your case, your email program didn't even try to provide a text 
version, so those of us who read text emails can't make much sense of it.


Fortunately, I can decipher it by using someone else's reply.  I quote 
that below:


>
def password(y):
> vowels=["a","e","i","o"]

You might want to include "u" in that list.  And maybe the uppercase 
versions as well.


> if y[0] in vowels:
> return False
> if len(y) ==0:
> return True
> elif(y[len(y)-1] != vowels):

No, you want  if y[-1] in vowels:   instead.  A string is never going to 
be equal to a list.


> return False
> else:
> return password(y[1:len(y)-1])
> x=input("Enter a password:")
> print("It is", password(x),"that",x,"has no vowles")


I presume that making the function recursive was an explicit part of the 
assignment.


--
DaveA
___
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] recursive function password check

2013-02-06 Thread Prasad, Ramit
Mara Kelly wrote:
> Hi everyone, trying to write a program that has the user enter a password, 
> checks if it contains any vowels, and
> if it does prints ' It is false that password(whatever the user enters) has 
> no vowels,' and if it has no vowels
> prints it is True that password has no vowels...
> 
> Here is what I have so far...
> def password(y):
>     vowels=["a","e","i","o"]
>     if y[0] in vowels:
>         return False
>     if len(y) ==0:
>         return True
>     elif(y[len(y)-1] != vowels):
>         return False
>     else:
>         return password(y[1:len(y)-1])
> x=input("Enter a password:")
> print("It is", password(x),"that",x,"has no vowles")
> 
> As of now it just asks for the password, and then prints 'It is False that 
> password(whatever was entered) has no
> vowles' for any word I enter. I think maybe some of my if statement 
> conditions may be being returned to the
> function, but then not printing the appropriate one? Can anyone help? Thanks!


Why look at each character in the password? Unless you have a very short
password it will be more inefficient than looking for the vowels. Also,
if you lowercase the incoming password then you can avoid looking
for uppercase vowels. Note: if you have to deal with international
character sets (code pages) then you might not want to lower. If you
did not understand the previous statement, then chances are it does
not apply to you. :) I will leave the following code snippet with you
to adapt into your program. 

y = y.lower()
if vowel in y:
return False


This email is confidential and subject to important disclaimers and
conditions including on offers for the purchase or sale of
securities, accuracy and completeness of information, viruses,
confidentiality, legal privilege, and legal entity disclaimers,
available at http://www.jpmorgan.com/pages/disclosures/email.  
___
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] help with running perl script that writes to a text file

2013-02-06 Thread Alan Gauld

On 06/02/13 10:58, eryksun wrote:


and pedantic comment about the habit of saying "DOS prompt". The cmd
shell is a Win32 console application, unlike DOS command.com.


Yes, but the problem is that Windows now has so many command prompts 
(cscript, cmd, power shell etc) that "the Windows prompt"

would be meaningless and "the cmd prompt" too awkward to say,
so "the DOS prompt" is both traditional and sufficiently specific making 
it the most easily understandable of the likely terms.


--
Alan G
Author of the Learn to Program web site
http://www.alan-g.me.uk/

___
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] regarding the list problem

2013-02-06 Thread bob gailer


http://www.pythontutor.com/visualize.html

is very helpful. Enter your code, click Visualize Execution, then click 
forward.


--
Bob Gailer
919-636-4239
Chapel Hill NC

___
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] Tutor Digest, Vol 108, Issue 22

2013-02-06 Thread 3n2 Solutions
On Wed, Feb 6, 2013 at 3:00 AM,   wrote:
> Send Tutor mailing list submissions to
> tutor@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-requ...@python.org
>
> You can reach the person managing the list at
> tutor-ow...@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: help with running perl script that writes to a text file
>   (Peter Otten)
>2. Re: help with running perl script that writes to a text file
>   (eryksun)
>
>
> --
>
> Message: 1
> Date: Wed, 06 Feb 2013 11:12:54 +0100
> From: Peter Otten <__pete...@web.de>
> To: tutor@python.org
> Subject: Re: [Tutor] help with running perl script that writes to a
> text file
> Message-ID: 
> Content-Type: text/plain; charset="ISO-8859-1"
>
> 3n2 Solutions wrote:
>
>> Hello,
>>
>> I want to automate the following manual process from DOS promp:
>>
>> c:/scripts/perl>perl fix.pl base.gtx >base.txt
>>
>> Here is my python script:
>>
>> path="c:/scripts/perl/"
>> subprocess.call(['perl','fix.pl','base.gtx >base.txt',path])
>>
>> I also tried this alternative:
>>
>> subprocess.Popen(['perl','fix.pl','base.gtx >base.txt',path]) #same
>> result from this method.
>>
>> The above script generates the base.txt file but has no content in it.
>>
>> any ideas as to why the resulting text file is empty? Am I using the
>> correct python commands to run the above manual process?
>
> I'm surprised that base.txt is generated at all, I'd expect fix.pl to look
> for a file named "base.gtx >base.txt" and complain when it doesn't find
> that.
>
> I think the following should work:
>
> with open("c:/scripts/perl/base.txt", "w") as f:
> subprocess.check_call(
> ["perl",
>  "c:/scripts/perl/fix.pl",
>  "c:/scripts/perl/base.gtx"],
> stdout=f)
>
>

Peter, that did it! Thank you.
___
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor


[Tutor] If a method has no return type?

2013-02-06 Thread Sunil Tech
If a method has no return type?
what will it return?
___
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] If a method has no return type?

2013-02-06 Thread wesley chun
On Thu, Feb 7, 2013 at 12:09 AM, Sunil Tech  wrote:

> If a method has no return type?
> what will it return?
>

note the original question is partially invalid... Python functions and
methods aren't typed. however, i imagine the OP really meant *return value*
instead, so the answer is really the following:
functions *and* methods with no explicit return *value* return None... this
happens when you either have no return statement or just return by itself
with no object given.

one exception is __init__()... you're never supposed to return anything
from it... ever. i can't think of any others... can you?

best regards,
-- wesley
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
"A computer never does what you want... only what you tell it."
+wesley chun : wescpy at gmail : @wescpy
Python training & consulting : http://CyberwebConsulting.com
"Core Python" books : http://CorePython.com
Python blog: http://wescpy.blogspot.com
___
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] If a method has no return type?

2013-02-06 Thread Kal Sze
Dear Sunil,

No method or function in Python has a *static* return type. That's
because Python is by nature a dynamic language, with duck typing and
dynamic dispatch. In fact, any method or function may well return any
of a number of different types:

def crazy_function(return_int)
if return_int:
return 1
else:
return 'foo'

It's probably bad design, but there is nothing in the Python grammar
and semantics that stops you from doing that.

So your question is better phrased as: if I don't explicitly return
anything, what is returned?

The answer to that would be: the None object

Cheers,
Kal

On 7 February 2013 14:09, Sunil Tech  wrote:
> If a method has no return type?
> what will it return?
>
> ___
> Tutor maillist  -  Tutor@python.org
> To unsubscribe or change subscription options:
> http://mail.python.org/mailman/listinfo/tutor
>
___
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] help with running perl script that writes to a text file

2013-02-06 Thread eryksun
On Wed, Feb 6, 2013 at 12:47 PM, Alan Gauld  wrote:
> so "the DOS prompt" is both traditional and sufficiently specific making it
> the most easily understandable of the likely terms.

"DOS prompt" is a common idiom, but it bears mentioning now and then
that the OS is NT [1], not DOS. That's all; I know I'm being pedantic.

Officially the Windows command-line shell is called the "command
prompt". I call it the shell [2] or command line. Unless someone says
PowerShell or 4NT, I assume it's cmd.

[1] Windows 8 is NT 6.2.9200
[2] Not the GUI shell, Explorer, which is set here:
HKLM\Software\Microsoft\Windows NT\CurrentVersion\WinLogon\Shell
___
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor