Ty przechodząc liczbę całkowitą do swojej funkcji jako a
. Następnie spróbować przypisać do niej, jak: a[k] = ...
ale to nie działa, ponieważ a
jest skalarne ...
To samo jakbyś próbowała:
50[42] = 7
To stwierdzenie nie ma sens, a pyton krzyczy na ciebie w ten sam sposób (prawdopodobnie).
Ponadto, ++k
nie robi tego, co myślisz - jest przetwarzany jako (+(+(k)))
- tj. Kod bajtowy jest tylko UNARY_POSITIVE
dwa razy. To, co rzeczywiście chcą coś jak k += 1
Wreszcie, należy zachować ostrożność ze stwierdzeniami takimi jak:
q = q/b
Nawias korzystania z nadrukiem zakładają, że chcesz to wykorzystać na python3.x w pewnym momencie. ale, x/y
zachowuje się inaczej na python3.x niż na python2.x. Patrząc na algorytm, domyślam się, że chcesz z podziałem całkowitym (ponieważ sprawdzisz q != 0
, który byłby trudny do spełnienia dzięki float). W takim przypadku należy rozważyć użycie:
q = q // b
, który wykonuje podział liczb całkowitych na python2.x i python3.x.
@JBernardo - zaskakująco, '++ k' jest poprawną składnią pythona - która jest skrótem od" nic nie rób do k "i zwróć ją za * najwięcej * obiektów' k' :-). 'k ++' bez niczego po prawej stronie jest pewny sposób na awarię i nagrywanie :). – mgilson