[Tutor] enhanced subtration in an exponent

Dave Angel davea at davea.name
Tue Apr 21 12:55:21 CEST 2015


On 04/20/2015 08:44 PM, Jim Mooney wrote:
> Why does the compiler choke on this? It seems to me that the enhanced
> subtraction resolves to a legitimate integer in the exponent, but I get a
> syntax error:
>
> B = '11011101'
> sum = 0
> start = len(B)
> for char in B:
>      sum += int(char) * 2**(start -= 1) ## syntax error
>
> print(sum)
>

As others have said, the augmented assignment, like the regular 
assignment, is not permissible inside an expression.  It is a type of 
statement.

You could solve this easily enough by:


B = '11011101'
sum = 0
start = len(B)
for index, char in enumerate(B):
     sum += int(char) * 2**(start - index)

print(sum)


But I'd think that:

B = '11011101'
sum = 0
for char in B:
     sum = sum * 2 + int(char)

print(sum)

reads much better, as well as being much faster.



-- 
DaveA


More information about the Tutor mailing list