<div class="gmail_quote">On Mon, Mar 21, 2011 at 6:06 PM, David <span dir="ltr">&lt;<a href="mailto:ldl08@gmx.net">ldl08@gmx.net</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Hello list,<br>
<br>
I am having trouble understanding the following function. What trips me<br>
up is the &quot;letter = letter.lower()&quot; line.<br>
<br>
As I understand, the function takes a letter and assigns True to a<br>
letter if it is upper case.<br>
<br>
But then he goes to<br>
<br>
letter = letter.lower()<br>
<br>
and all letters are converted back to lower again!?? The point is that,<br>
to my understanding, the logic follows from the first block to<br>
letter = letter.lower(). Isn&#39;t that true?<br>
<br>
Thanks for helping me out,<br>
<br>
David<br>
<br>
<br>
def rotate13_letter(letter):<br>
    &quot;&quot;&quot;<br>
    Return the 13-char rotation of a letter.<br>
    &quot;&quot;&quot;<br>
    do_upper = False<br>
    if letter.isupper():<br>
        do_upper = True<br>
<br>
    letter = letter.lower()<br>
    if letter not in CHAR_MAP:<br>
        return letter<br>
<br>
    else:<br>
        letter = CHAR_MAP[letter]<br>
        if do_upper:<br>
            letter = letter.upper()<br>
<br>
    return letter<br>
_______________________________________________<br>
Tutor maillist  -  <a href="mailto:Tutor@python.org">Tutor@python.org</a><br>
To unsubscribe or change subscription options:<br>
<a href="http://mail.python.org/mailman/listinfo/tutor" target="_blank">http://mail.python.org/mailman/listinfo/tutor</a><br>
</blockquote></div><br>The person who wrote this only wanted to write one conversion routine, so what he&#39;s doing is:<br>- check to see if the letter is uppercase, and if it is, set a flag (do_upper) for later<br>- force the letter to lowercase regardless of its previous status<br>
- do the conversion<br>- if the do_upper flag is set, convert back to uppercase<br>- return the letter<br><br>It may look a little funny, but it beats writing logic to deal with each upper- and lower-case letter.<br><br>