TypeError: el objeto ‘int’ no admite la asignación de elementos

¿Por qué me sale este error?

a[k] = q % b TypeError: 'int' object does not support item assignment 

Código:

 def algorithmone(n,b,a): assert(b > 1) q = n k = 0 while q != 0: a[k] = q % b q = q / b ++k return k print (algorithmone(5,233,676)) print (algorithmone(11,233,676)) print (algorithmone(3,1001,94)) print (algorithmone(111,1201,121)) 

Estás pasando un entero a tu función como a . Luego tratas de asignarlo como: a[k] = ... pero eso no funciona ya que a es un escalar …

Es lo mismo que si lo hubieras intentado:

 50[42] = 7 

Esa afirmación no tiene mucho sentido y Python te gritaría de la misma forma (probablemente).

Además, ++k no está haciendo lo que crees que hace, se analiza como (+(+(k))) , es decir, el código de bytes es solo UNARY_POSITIVE dos veces. Lo que realmente quieres es algo como k += 1

Finalmente, tenga cuidado con declaraciones como:

 q = q / b 

El paréntesis que usa con la impresión implica que desea usar esto en python3.x en algún momento. pero, x/y comporta de manera diferente en python3.x que en python2.x. Mirando el algoritmo, supongo que desea una división de enteros (ya que marca q != 0 que sería difícil de satisfacer con flotadores). Si ese es el caso, debes considerar usar:

 q = q // b 

que realiza la división entera tanto en python2.x como en python3.x.