[Tutor] Is it pythonesque

spir denis.spir at free.fr
Mon Jan 25 12:25:05 CET 2010


On Sun, 24 Jan 2010 11:13:37 -0500
"Robert Berman" <bermanrl at cfl.rr.com> wrote:

> Good morning,
> 
>  
> 
> Given the following code snippets:
> 
>  
> 
> def getuserinput():
> 
>     while True:
> 
>         s1 = raw_input('Enter fraction as N,D or 0,0 to exit>>')
> 
>         delim = s1.find(',')
> 
>         if delim < 0:
> 
>             print 'invalid user input'
> 
>         else:
> 
>             n = int(s1[0:delim])
> 
>             d = int(s1[delim+1::])
> 
>             return n,d
> 
>  
> 
> def main():
> 
>     while True:
> 
>         n,d = getuserinput()
> 
>         if n == 0 or d == 0: return 0
> 
>  
> 
> n and d are always returned provided the input is given as n,d. n/d will
> print an error message and the loop will reiterate until the user format is
> correct. Please note there is no true ending return for getuserinput() as it
> is hung off an if statement and if by some  chance it breaks, it should
> return None which will abort the program. While I suspect this style is
> devious, is it dangerous or 'wrong' to use. Comments and other renditions
> are most welcome.
> 
>  
> 
> Thank you,
> 
>  
> 
> Robert Berman

-0- Blank lines between statament is certainly not pythonesque ;-)
-1- Why not chose '/' as delimiter?
-2- You may check there is a single delimiter.
-3- You may consider a user-friendly (eg ''), rather than a programmer-friendly ("0,0") code for breking the loop. It'd cost you a pair of lines of code.

For instance:

FRACT = '/'
def getUserInput():
    while True:
        s1 = raw_input('Enter fraction as N/D or enter to exit > 1')
        if s1 == '':
            return None                # will trigger exit in main
        nDelims = s1.count(FRACT)      # only 1 is valid
        if nDelims == 1:
            n,d = s1.split(FRACT)
            return int(n),int(d)       # remaining issue
        print 'invalid user input'
getUserInput()

An issue issue remains, namely that what around FRACT may not be valid integers.

Denis
________________________________

la vita e estrany

http://spir.wikidot.com/


More information about the Tutor mailing list