[Tutor] Wrapping my head around global variables!!
Elwin Estle
chrysalis_reborn at yahoo.com
Mon Jan 31 14:07:53 CET 2011
I am no Python guru, I haven't even scratched the surface. And to be honest, I do not know the answer to your question. It is probably a Python 3.x thing. I would suggest looking here:
http://docs.python.org/modindex.html
...which is for
--- On Sun, 1/30/11, Nevins Duret <duretn at bellsouth.net> wrote:
From: Nevins Duret <duretn at bellsouth.net>
Subject: Re: [Tutor] Wrapping my head around global variables!!
To: tutor at python.org
Date: Sunday, January 30, 2011, 2:19 PM
Hello Elwin,
Elwin I have no objections with you taking the idea, all I want
to do is learn and connect with my some and give him something to
aspire to and just plain out challenge. I purchased several python
books so if you have any recommendations on others that helped you
to become
,what I consider, a python guru then please send me some links. My
only challenge is time and patience and sticking with. I really
appreciated everyone's input in helping me understand the underlying
concepts of this. It is more than appreciated. Well, Elwin, I ran
the code using python2.6 and it worked perfectly. My only problem
now is in trying to run it in python3. These are the steps that
I've taken to resolve it:
#!/usr/bin/env python3.1
from tkinter import *
import tkinter.font
letters ="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
vowels = "AEIOU"
sometimes = "Y"
def changeLetter(letter):
chosenLetter.configure(text = letter)
if letter in vowels:
message.configure(text = "IS A VOWEL")
elif letter in sometimes:
message.configure(text = "SOMETIMES A VOWEL")
else:
message.configure(text = "IS A CONSONANT")
root = Tk()
root.title('!!NAME MY CONSONANT/ NAME MY VOWEL!!')
lgFont = tkinter.font(family = "HELVETICA", size = 200)
msgFont = tkinter.font(family = "HELVETICA", size = 16)
mainFrame = Frame()
mainFrame.pack(padx = 10, pady = 10)
letterMessage = Frame(mainFrame)
chosenLetter = Label(letterMessage, width = 2, height = 1, font =
lgFont, relief = 'sunken')
message = Label(letterMessage, text = "CHOOSE LETTER", font =
msgFont, relief = 'sunken')
chosenLetter.pack(padx = 10, pady = 10, fill = 'x')
message.pack(padx = 10, pady = 10, anchor = 'w', fill = 'x', ipady
= 5)
vowelsFound = Label(mainFrame)
vowelsFound.grid(row = 7, column =1, columnspan = 5, sticky = 'W')
letterMessage.grid(row = 1, column = 6, rowspan = 13)
count = 1
letterButtons = dict()
rowCount = 1
columnCount = 1
stopPoints = (5, 10, 15, 20, 25, 26)
stopIndex = 0
#letterbutton[1] = button for letter 'A'
#letterbutton[2] = button for letter 'B'
for letter in letters:
letterButtons[count] = Button(mainFrame, text = letter, width
= 5, command = lambda arg1 = letter : changeLetter(arg1))
if count == 26:
columnCount = 3
letterButtons[count].grid(row = rowCount, column =
columnCount)
columnCount += 1
if count == stopPoints[stopIndex] and stopIndex <= 4:
rowCount += 1
columnCount = 1
stopIndex += 1
count += 1
root.mainloop()
When I try and run this code, I get the error:
Traceback (most recent call last):
File "/home/neduret/pythonproj/alphabet3.py", line 21, in
<module>
lgFont = tkinter.font(family = "HELVETICA", size = 200)
TypeError: 'module' object is not callable
Now correct me if I'm wrong, but for whatever reason, is tkFont
deprecated in Python3.1? Well, this is why I used
import tkinter.font instead.
However, now I am getting the error message stated above. I don't
know if you know of any steps I can do to resolve this however, I'm
sure it must stem from either a syntax or a module I've yet to
import for Python3.1, being that I had to install tkFont to get it
to run under the Python2.6 environment. I specifically admired your
both complete and descriptive explanation on your reasoning for
every piece of line in the code. I can't thank you enough.
Best Regards,
Nevins Duret
On 01/29/2011 07:01 PM, Elwin Estle wrote:
I found myself rather intrigued with what I perceived to be the basic idea behind your programming attempt, so just for the heck of it, I played around further with the idea.
Attached is what I have so far, if you are interested. It is a Tkinter GUI version with buttons for each letter and code to tell the user if it is a vowel or a consonant, or the "sometimes" vowels, y and w. It does not record letters chosen.
It only uses the upper case letters, but I was thinking it might be interesting to use both upper and lower case. Right now, the letters are arranged in order, but with a total of 52 characters, both upper and lower, arranged in a grid, one could perhaps "scramble" the order of the buttons using the random.shuffle function.
Python does have sound capability, depending on the platform you are running on, so it would be cool to have it play some kind of .wav file that tells the user if the letter is a
vowel/consonant. You could even record the sound of each letter, then string the .wavs together so that it could say, "A is a vowel" or somesuch. I haven't messed with the sound thing, myself.
Anyway, the attached code is heavily commented. Feel free to delete the attachment (if you feel I am "horning in" on your idea) or use/modify it for your own purposes. Writing it helped me learn a few things, like the whole "button - command" thing. It was driving me nuts, until I found out what the problem was. And it was a chance to use the code somebody on python tutor gave me for creating Tkinter widgets "on the fly" at program runtime.
--- On Fri, 1/28/11, Nevins Duret <duretn at bellsouth.net> wrote:
From: Nevins Duret <duretn at bellsouth.net>
Subject: [Tutor] Wrapping my head around global variables!!
To: tutor at python.org
Date: Friday, January 28, 2011, 10:22 AM
Hello Python collective,
I am trying to wrap my head
around what exactly is causing me not to get any output or
error message in the following code:
#!/usr/bin/env python3.1
import random
def main():
def chosen_letter():
chosen_letter =
Consonant()
chosen_letter =
Vowel()
return chosen_letter
Consonant = random.choice( [B,
C, D, F, G, H, J, K, L, M, N, P, Q, R, S, T, V, W, X, Z] )
Vowel = random.choice( [A, E,
I, O, U, Y] )
print("Choose a letter"(
Consonant, Vowel ))
print("You randomly chose"(
Consonant, Vowel ))
if Consonant == ( "B C D F G H
J K L M N P Q R S T V W X Z" ):
print("You
randomly chose a Consonant")
else:
print("You
randomly chose a Vowel")
if Consonant:
gameStatus = "CONTINUE"
elif Vowel == A or Vowel == E
or Vowel == I or Vowel == O or Vowel == U or Vowel == Y:
gameStatus = "FINISHED ALL VOWELS"
if gameStatus == "FINISHED ALL
VOWELS":
print("FINISHED
DISPLAYING ALL VOWELS")
else:
print("LOOKING
FOR MORE VOWELS")
if __name__ == "__main__": main()
All this code is intended to do is to have a user, in this
case my 4 year old, choose letters of the alphabet until all
vowels are specified. For whatever reason I'm neither
getting an error message nor am I obtaining any messages in
the output console. Any help on this would be greatly
appreciated. I eventually want to make this into a gui
in order to introduce young kids to programming, by having
the letters print out to screen as the user makes choices
based on vowels and consonants. Again, thank you for
any help and expertise.
Best Regards,
freesparks
_______________________________________________
Tutor maillist - Tutor at python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor
-----Inline Attachment Follows-----
_______________________________________________
Tutor maillist - Tutor at python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor
More information about the Tutor
mailing list