Wpis z mikrobloga

Hej, mam problem:

def DashInsert(string):

        tab = list(string)
        tab = map(int, tab)

        for i in range(len(tab)):
                print tab
                if type(tab[i]) == int and tab[i] % 2 != 0:

                        if (i != len(tab)-1 and tab[i+1] % 2 != 0):

                                tab.insert(tab[i+1], '-')
                        else:
                                pass
                else:
                        pass

        print tab

Zadanie polega na tym, że wpisujemy string z liczbami i jeśli jest w nim 2x pod rząd liczba nieparzysta to wstawi między nimi myślnik. Przykład : '9987568' ---> '9-987-568'

Wyskakuje mi błąd:

not all arguments converted during string formatting


Nie rozumiem skąd niby tam string, przecież przy insert nie powinno mi tego liczyć w pętli for, a do tego zrobiłem założenie if, że musi być to int, więc w jaki sposób ten nieszczęsny myślnik przechodzi przez to.
Co więcej jeśli puszę program to '-' wpisuje mi na końcu listy, a nie w miejscu tab[i+1], przykład na screenshotcie.
#python
Melt - Hej, mam problem:


def DashInsert(string):
        
        tab = list(s...

źródło: comment_Jl29wzcPBfsmUaDy5lR9P2BKL5spOfk9.jpg

Pobierz
  • 5
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@LOLWTF: Dzięki wielkie, czy mógłbyś mi jeszcze wytłumaczyć dlaczego funkcja insert() wrzuca mi '-' na koniec listy, a nie między liczbami nieparzystymi?
  • Odpowiedz
@Melt: jako parametr metody insert podajesz index, na który chcesz wsadzić element. co podajesz jako index? tab[i+1]. Czyli pobiera Ci element z listy, który w tym przypadku jest równy 9 - więc wsadza Ci na koniec. pewnie chciałeś zrobić coś takiego:

tab.insert(i+1, '-')
:)
  • Odpowiedz
@Melt: spoko, każdy czasem ma takie głupie problemy. Polecam metodę gumowej kaczki - tłumaczysz na głos gumowej kaczce linia po linii co się dzieje. pewnie sam byś zauważył ten błąd.
  • Odpowiedz