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
@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?
@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:
@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.
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:
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
źródło: comment_Jl29wzcPBfsmUaDy5lR9P2BKL5spOfk9.jpg
Pobierzinsertpodajesz 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ówny9- więc wsadza Ci na koniec. pewnie chciałeś zrobić coś takiego:tab.insert(i+1, '-'):)