python newbie having strangeness
Paul McGuire
ptmcg at users.sourceforge.net
Thu Feb 26 13:07:33 EST 2004
More information about the Python-list mailing list
Thu Feb 26 13:07:33 EST 2004
- Previous message (by thread): python newbie having strangeness
- Next message (by thread): python newbie having strangeness
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
"Joe F. Blow" <dood at dood.com> wrote in message news:of4s30p4a2nq964bjb0kcb25ocrv5kj2sk at 4ax.com... > The program below has been acting very weird. Last night it complained > that I was referencing X in getline() before defining it. Of course I > wasn't, as X is a global. > > This morning I ran the exact same code again and now it says, > "NameError: name 'convert' is not defined". HUH????? Of course it's > defined! > > What am I doing wrong? Any ideas? I'm using pythonwin and python2.3 on > windoze xp. > > -------------------------------------------------------------------------- -------- > > x=1 > count=binlist=0 > > #get s19 file in list named "line" > inp=file("c:\\download\\electron\\68hc11\\a code\\tankbot2.s19","r") > line = inp.read() > inp.close() > > if line[x]=="0": #is command char a "0"? > dig1=line[x+1] #yes, get line length > dig2=line[x+2] > a=convert(dig1,dig2) > x=x+((a*2)+5) #point to command char of next line > > if line[x]=="1": > getline() > print binlist > > def getline(): > global count > global x > global line > global binlist > dig1=line[x+1] > dig2=line[x+2] > a=convert(dig1,dig2) > x+=2 > e=x > for e in range(e,e+a,2): > dig1=line[e+1] > dig2=line[e+2] > binlist[count]=convert(dig1,dig2) > count+=1 > > #convert ascii hex digits x & y to an integer > def convert(x,y): > a=int(x) > b=int(y) > a=a<<4 > a=a+b > return(a) > Hey Joe - Here are some keen Python features that might make your task easier: file.readlines() - will give you each line of your file at a time, no need to read it all at once (or even better, "for line in file('xyzzy.s19'):") string slicing - line[x:x+2] will give you a 2-char substring at location x hex to int conversion - int("0A",16) gives the value 10 list comprehensions (this is way cool!) - bytes = "AABBCCDD", bytelist = [ int(bytes[x:x+2],16) for x in range(0,len(bytes),2) ] results in a bytelist containing [170, 187, 204, 221] Python has been around a while, and before writing your own hex-to-int conversion, it's worth trying to find a way to do it in the language. Soon you'll graduate from brute force range looping to list comprehensions. Good luck with your S19 work. -- Paul
- Previous message (by thread): python newbie having strangeness
- Next message (by thread): python newbie having strangeness
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list