470,849 Members | 1,440 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 470,849 developers. It's quick & easy.

an error in commented code?

Here's my code, with the error following it:

props = ['A', 'B', 'C', 'D']
group1 = ['C', 'A', 'D', 'B', 17]
group2 = ['A', 'B', 'D', 'C', 32]
group3 = ['D', 'B', 'C', 'A', 34]
group4 = ['B', 'A', 'C', 'D', 17]

# Submitter: Michael Davies
def all_perms(str):
if len(str) <=1:
yield str
else:
for perm in all_perms(str[1:]):
for i in range(len(perm)+1):
#nb str[0:1] works in both string and list contexts
yield perm[:i] + str[0:1] + perm[i:]

def checkOrder(x, y):
x_votes = 0
y_votes = 0

if group1.index(x) < group1.index(y):
x_votes += group1[4]
else:
y_votes += group1[4]

if group2.index(x) < group2.index(y):
x_votes += group2[4]
else:
y_votes += group2[4]

if group3.index(x) < group3.index(y):
x_votes += group3[4]
else:
y_votes += group3[4]

if group4.index(x) < group4.index(y):
x_votes += group4[4]
else:
y_votes += group4[4]

if x_votes > y_votes:
return x
else:
return y

for order in all_perms(props):
# if reduce(checkOrder, order) == 'A':
# print 'A wins:'
# print order
# if reduce(checkOrder, order) == 'B':
# print 'B wins:'
# print order
if reduce(checkOrder, order) == 'C':
print 'C wins:'
print order
# if reduce(checkOrder, order) == 'D':
# print 'D wins:'
# print order

*** Error in script or command!

Traceback (most recent call last):
File "C:\Python24\myscripts\ecco\1-1-1.py", line 60
# print order
^
SyntaxError: invalid syntax


Line 60 also happens to be the very last line, which is commented. I've
tried a couple of different things to see if it's a whitespace problem,
but it doesn't seem to be. I'm just confused why it detects an error in
the commented code anyway.

Thanks.
Apr 28 '06 #1
4 1171
Tried adding a "\n" (i.e. press the enter key) after the last line
(i.e. right after the word "order") so that you don't end with a
comment.

André

Apr 28 '06 #2
André wrote:
Tried adding a "\n" (i.e. press the enter key) after the last line
(i.e. right after the word "order") so that you don't end with a
comment.

André


Weird, but it worked! :)
Apr 28 '06 #3
John Salerno wrote:
Here's my code, with the error following it:

props = ['A', 'B', 'C', 'D']
group1 = ['C', 'A', 'D', 'B', 17]
group2 = ['A', 'B', 'D', 'C', 32]
group3 = ['D', 'B', 'C', 'A', 34]
group4 = ['B', 'A', 'C', 'D', 17]

# Submitter: Michael Davies
def all_perms(str):
if len(str) <=1:
yield str
else:
for perm in all_perms(str[1:]):
for i in range(len(perm)+1):
#nb str[0:1] works in both string and list contexts
yield perm[:i] + str[0:1] + perm[i:]

def checkOrder(x, y):
x_votes = 0
y_votes = 0

if group1.index(x) < group1.index(y):
x_votes += group1[4]
else:
y_votes += group1[4]

if group2.index(x) < group2.index(y):
x_votes += group2[4]
else:
y_votes += group2[4]

if group3.index(x) < group3.index(y):
x_votes += group3[4]
else:
y_votes += group3[4]

if group4.index(x) < group4.index(y):
x_votes += group4[4]
else:
y_votes += group4[4]

if x_votes > y_votes:
return x
else:
return y

for order in all_perms(props):
# if reduce(checkOrder, order) == 'A':
# print 'A wins:'
# print order
# if reduce(checkOrder, order) == 'B':
# print 'B wins:'
# print order
if reduce(checkOrder, order) == 'C':
print 'C wins:'
print order
# if reduce(checkOrder, order) == 'D':
# print 'D wins:'
# print order


I don't think you need all those 'ifs'.

groups = [group1, group2, group3, group4]

def checkOrder(x, y):
x_votes = 0
y_votes = 0
for group in groups:
if group.index(x) < group.index(y):
x_votes += group[4]
else:
y_votes += group[4]

for order in all_perms(props):
winner = reduce(checkOrder, order)
print '%s wins!' % winner
print order

Gerard

Apr 28 '06 #4
Gerard Flanagan wrote:
I don't think you need all those 'ifs'.

groups = [group1, group2, group3, group4]

def checkOrder(x, y):
x_votes = 0
y_votes = 0
for group in groups:
if group.index(x) < group.index(y):
x_votes += group[4]
else:
y_votes += group[4]

for order in all_perms(props):
winner = reduce(checkOrder, order)
print '%s wins!' % winner
print order


Nice. I was shuddering as I copy and pasted each if block. :)
Apr 28 '06 #5

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

16 posts views Thread by Gernot Frisch | last post: by
6 posts views Thread by Peter Frost | last post: by
5 posts views Thread by Chad | last post: by
1 post views Thread by shara | last post: by
3 posts views Thread by Fabio | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.