Stai passando un intero alla funzione come a
. Quindi si tenta di assegnare ad esso come: a[k] = ...
ma che non funziona in quanto a
è uno scalare ...
E 'la stessa cosa come se si fosse provato:
50[42] = 7
Tale affermazione non lo fa ha molto senso e python ti urlerebbe contro allo stesso modo (presumibilmente).
Inoltre, ++k
non sta facendo quello che pensi lo fa - è analizzato come (+(+(k)))
- vale a dire il bytcode è solo UNARY_POSITIVE
due volte. Che cosa si vuole realmente è qualcosa di simile k += 1
Infine, fare attenzione con affermazioni del tipo:
q = q/b
La parentesi si usa con la stampa implicano che si desidera utilizzare questo su python3.x ad un certo punto. ma, x/y
si comporta in modo diverso su python3.x rispetto a python2.x. Osservando l'algoritmo, suppongo che tu voglia la divisione intera (dato che controlli q != 0
che sarebbe difficile da soddisfare con i float). Se questo è il caso, si dovrebbe considerare l'utilizzo di:
q = q // b
che svolge divisione intera sia python2.X e python3.x.
@JBernardo - sorprendentemente, '++ k' è una sintassi python valida - che è l'abbreviazione di" non eseguire nulla su k "e la restituisce per * most * objects' k' :-). 'k ++' senza nient'altro più a destra è un modo sicuro per mandare in crash e masterizzare :). – mgilson