On 11/17/2011 12:54 PM, Nidian Job-Smith wrote:
Sorry about the code format in last E-mail. I'll attach the code in notepad, as
my e-mail doesnt seem to like sending plain text..
But attachments aren't visible to everyone on the list, and even when
they are, some people are (rightfully) paranoid about arbitrarily
opening attachments.
You don't name your email program, but if it cannot handle text
messages, perhaps you should look for another. There are many free
email programs. For example, I use Thunderbird. I know it works under
Windows, since I used to use it that way. But I'm currently using it
under Linux.
----------------------------------------
From: nidia...@hotmail.com
To: st...@pearwood.info; tutor@python.org
Date: Thu, 17 Nov 2011 17:45:11 +0000
Subject: [Tutor] Rot13
Hi all,
I'm new to programming (thus Python), so after reading the basics, I wanted to
practise what I've learnt .
I've come across a beginners exercise which is to write the code for rot13.
I've written some code but it doesn't seem to work....
When I run it I get this error:
NameError: global name 'rot13_char' is not defined
That's not the whole error message/
How can you get this error when the file you attached never used that
name ? Be sure and use cut 'n paste when telling about an error
message. If you don't know how, ask, but be sure and give your
environment specifics.
Further, the file you attached wouldn't even try to run anything, so it
couldn't get any such error, even if we concede a typo in the name.
When I run it (after renaming it from a .txt extension to a .py one), I
get the following:
davea@think:~/temppython$ mv rot13_code-1.txt rot13_code-1.py
davea@think:~/temppython$ python rot13_code-1.py
davea@think:~/temppython$
Now, if I add a couple of lines to it to test it out:
print rot13("abc")
print rot13("XyzzY")
Then I indeed get an error:
davea@think:~/temppython$ python rot13_code-1.py
Traceback (most recent call last):
File "rot13_code-1.py", line 32, in <module>
print rot13("abc")
File "rot13_code-1.py", line 30, in rot13
return ''.join( rot13_low(char)for char in string )
File "rot13_code-1.py", line 30, in <genexpr>
return ''.join( rot13_low(char)for char in string )
NameError: global name 'rot13_low' is not defined
Guess what, you had two functions with the same name. So the first one
disappears. Apparently you wanted to name it rot13_low():
def rot13_low(s):
Now, when I run it, I get:
davea@think:~/temppython$ python rot13_code-1.py
Traceback (most recent call last):
File "rot13_code-1.py", line 32, in <module>
print rot13("abc")
File "rot13_code-1.py", line 30, in rot13
return ''.join( rot13_low(char)for char in string )
File "rot13_code-1.py", line 30, in <genexpr>
return ''.join( rot13_low(char)for char in string )
File "rot13_code-1.py", line 22, in rot13_low
char_low = char_low.lower()
AttributeError: 'tuple' object has no attribute 'lower'
No idea why you created a tuple called char_low. My guess is that you
meant the formal parameter of the first function to be char_low, since
calling it s would be misleading. It's intended to be a single
character, not a string.
Anyway, you can presumably see the process. Look at the whole error
traceback, and if you can't see what it means, ask for help.
BTW, the docstring you have for the first function belongs in the second
one. That first function doesn't deal with strings.
--
DaveA
_______________________________________________
Tutor maillist - Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor