[Tutor] Still the Python Challenge - Conclusion
Joaquim Santos
jsantos.lazer at gmail.com
Fri Jan 6 00:14:11 CET 2012
Hi Robert!
Thanks for the heads up on the Style Guide. I'll read out the links
you pointed out to me.
About the script, result and Python Challenge, I apologize,
however... in previous emails bigger pointers were given speaking
about using 'maketrans' to solve the challenge.
My way was a work around that I was trying to implement since day 1
and that can be (and maybe it will be) used as a base for a
(non-serious) deciphering program.
So, again, I'm sorry for presenting too much information, however more
important parts where said already and if people are willing to find
out by searching a list/web instead of trying out by themselves...
they are going to find it!
Cheers!
2012/1/5 Robert Sjoblom <robert.sjoblom at gmail.com>:
> On 5 January 2012 19:41, Joaquim Santos <jsantos.lazer at gmail.com> wrote:
>> Hi List!
> [...]
>> This is my script (I know that I only verify a small range but it
>> works for what I want for now...)
>>
>> import string
>>
>> def decrypt(cypheredText, shiftedCypherNumber):
>> '''
>> This function will take two arguments. The first is the cyphered text,
>> the second
>> is the number of characters we need to shift the text so we can decrypt it.
>> This is a Caesar cypher.
>> '''
>>
>> textTranslated = list()
>>
>> for letter in cypheredText:
>>
>> asciiValue = ord(letter)
>>
>>
>> if asciiValue in range(97, 123):
>> asciiValue += shiftedCypherNumber
>>
>> if asciiValue > 122:
>> asciiValue -= 26
>>
>> newLetter = chr(asciiValue)
>>
>>
>> textTranslated.append(newLetter)
>>
>> joinedText = ''.join(textTranslated)
>>
>> return joinedText
>>
>>
>> text = 'g fmnc wms bgblr rpylqjyrc gr zw fylb'
>>
>> a = decrypt(text, 2)
>>
>> print a
>>
>> and this is the end result:
>
> First of all, congratulations on solving it. Second, please don't
> include the answer to any python challenges to this list as future
> members or people searching for help with the same particular
> challenge might not want to know the answer. Thirdly, I think you
> should read PEP 8 - Style Guide for Python Code, but I'll quote the
> absolutely most relevant part:
>>Use blank lines in functions, sparingly, to indicate logical sections.
> You don't need a blank line after every line of code; in fact, it
> makes it harder to read. Where does one block end and another begin?
>
>>PEP 257 describes good docstring conventions. Note that most importantly, the """ that ends a multiline docstring should be on a line by itself, and preferably preceded by a blank line,
>
> def decrypt(cypheredText, shiftedCypherNumber):
> '''This function will take two arguments. The first is the cyphered text,
> the second is the number of characters we need to shift the text
> so we can decrypt it. This is a Caesar cypher.
>
> '''
> textTranslated = list()
> for letter in cypheredText:
> asciiValue = ord(letter)
> if asciiValue in range(97, 123):
> asciiValue += shiftedCypherNumber
> #and so on
>
> PEP 8 is really worth reading through: http://www.python.org/dev/peps/pep-0008/
> there's also a link to PEP 257 in it. If you follow most of the
> suggestions in PEP 8 it will be much easier to read your code, and
> because of that easier to help you.
>
> --
> best regards,
> Robert S.
--
Joaquim Santos
http://js-vfx.com
linkedin
More information about the Tutor
mailing list