help


A

aramildaern

Hi everyone! I don't mean to intrude, but ive heard great things about this group and ive stumped myself with my python code.

heres my code:
#! /usr/bin/python

import sys

global labelList
labelList= dict()

global counter
counter = 0

def execute(line):
if line.find("::print") != -1:
stripPrint = line.find("::print")
startPrint = line.find('"', stripPrint)
stopPrint = line.find('"', startPrint + 1)
printSection = line[startPrint + 1 : stopPrint]
print(printSection)

if line.find("::label") != -1:
stripLabel = line.find("::label")
startLabel = line.find(' ', stripLabel)
stopLabel = line.find('--', startLabel + 1)
label = line[startLabel + 1 : stopLabel]
line.strip("\r\n")
labelList[label] = counter

if len(sys.argv) < 2:
print("error: no input files")
print("compilation terminated")

else:
fileName = sys.argv[1]
jadeFile = open(fileName, 'r')

for line in jadeFile:
counter = counter + 1
execute(line)

jadeFile.close()

i = 0

while i < len(labelList):
print(labelList.keys(), ":", labelList.values())
i = i + 1


and its giving me a bunch of errors thanks for the help in advance!
 
Ad

Advertisements

I

Ian Kelly

Hi everyone! I don't mean to intrude, but ive heard great things about this group and ive stumped myself with my python code.

heres my code:

It would be helpful if you would also include the error that you get
when trying to run the code.
global labelList
labelList= dict()

global counter
counter = 0

That said, these lines stick out as being obviously wrong. The global
statement is used within the context of a function to declare that a
name used within that function has global scope rather than local
scope. There is no meaning to using the statement at the module level
like this -- Python already knows the name is global, because it's not
being used within a function -- and I'd be surprised if this didn't
result in a SyntaxError.
 
J

Joel Goldstick

Hi everyone! I don't mean to intrude, but ive heard great things about
this group and ive stumped myself with my python code.

No intrusion. That is what the list is for.

Two points:

You should use a descriptive subject line -- "Help" isn't really
descriptive.
You should run your code, cut and paste the traceback you get showing the
errors. This is extremely useful for people to help you with, and as you
program, you will learn how useful it can be to find problems on your own.

So, do that, and come back with that info
heres my code:
#! /usr/bin/python

import sys

global labelList
labelList= dict()

global counter
counter = 0

def execute(line):
if line.find("::print") != -1:
stripPrint = line.find("::print")
startPrint = line.find('"', stripPrint)
stopPrint = line.find('"', startPrint + 1)
printSection = line[startPrint + 1 : stopPrint]
print(printSection)

if line.find("::label") != -1:
stripLabel = line.find("::label")
startLabel = line.find(' ', stripLabel)
stopLabel = line.find('--', startLabel + 1)
label = line[startLabel + 1 : stopLabel]
line.strip("\r\n")
labelList[label] = counter

if len(sys.argv) < 2:
print("error: no input files")
print("compilation terminated")

else:
fileName = sys.argv[1]
jadeFile = open(fileName, 'r')

for line in jadeFile:
counter = counter + 1
execute(line)

jadeFile.close()

i = 0

while i < len(labelList):
print(labelList.keys(), ":", labelList.values())
i = i + 1


and its giving me a bunch of errors thanks for the help in advance!
 
C

Chris Angelico

Hi everyone! I don't mean to intrude, but ive heard great things about this group and ive stumped myself with my python code.

Hi! As others have said, this is no intrusion, but it'd help a lot if
you posted your errors and used a more useful subject line.
Additionally, when you post, can you give some example lines from the
file? This part of your code is impossible for us to simulate:
fileName = sys.argv[1]
jadeFile = open(fileName, 'r')

for line in jadeFile:
counter = counter + 1
execute(line)

jadeFile.close()

But this much I can suggest:
i = 0

while i < len(labelList):
print(labelList.keys(), ":", labelList.values())
i = i + 1


Instead of iterating with a counter, you can iterate with a Python 'for' loop.

for label,count in labelList.items():
print(label,":",count)

It's that simple!

ChrisA
 
S

Steven D'Aprano

its giving me a bunch of errors thanks for the help in advance!

Yay! Guessing games! I love guessing games! Let me see if I can guess the
errors you have...

/usr/bin/python: bad interpreter: No such file or directory

You haven't actually got Python installed, or at least not where you think
it is.

Am I close? If not, I recommend that you actually show us the errors you are
getting.
 
Ad

Advertisements

D

Dave Angel

Hi everyone! I don't mean to intrude, but ive heard great things about this group and ive stumped myself with my python code.

heres my code:
#! /usr/bin/python

import sys

global labelList
labelList= dict()

global counter
counter = 0

def execute(line):
if line.find("::print") != -1:
stripPrint = line.find("::print")
startPrint = line.find('"', stripPrint)
stopPrint = line.find('"', startPrint + 1)
printSection = line[startPrint + 1 : stopPrint]
print(printSection)

if line.find("::label") != -1:
stripLabel = line.find("::label")
startLabel = line.find(' ', stripLabel)
stopLabel = line.find('--', startLabel + 1)
label = line[startLabel + 1 : stopLabel]
line.strip("\r\n")
labelList[label] = counter

if len(sys.argv) < 2:
print("error: no input files")
print("compilation terminated")

else:
fileName = sys.argv[1]
jadeFile = open(fileName, 'r')

for line in jadeFile:
counter = counter + 1
execute(line)

jadeFile.close()

i = 0

while i < len(labelList):
print(labelList.keys(), ":", labelList.values())
i = i + 1


and its giving me a bunch of errors thanks for the help in advance!


[email protected]:~/temppython$ python aram.py
error: no input files
compilation terminated


These messages are triggered by sys.argv being less than 2. Cure is to
pass some string as the first argument on the command line.

Fixed that:

[email protected]:~/temppython$ ./aram.py myfile.txt
Traceback (most recent call last):
File "./aram.py", line 33, in <module>
jadeFile = open(fileName, 'r')
IOError: [Errno 2] No such file or directory: 'myfile.txt'

(notice that I pasted the full traceback into this message.)
Problem is that the program is treating that parameter as a filename,
and I don't have a file by that filename.

[email protected]:~/temppython$ ./aram.py aram.py
) != -1:
)
(' stripLabel = line.find("::label")', ':', 20)
('!= -1:', ':', 19)

Worked perfectly. Of course, nobody has said what it's supposed to do.
So anything that doesn't display an error must be okay.

How about describing what version of Python this is intended for, how
you ran it, and what errors you're getting. Don't paraphrase, don't
summarize (lots of errors ???!), just copy/paste.

And if it's appropriate, show a sample data file for it to open, not
attached, but pasted into your email message.
 
Ad

Advertisements


Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top