2016-04-14 4 views
-1
def swapCaseWithIndexes(text): 
    text2="" 
    indexes="" 
    for ch in text: 
     if ch.isalpha(): 
      if ch.islower(): 
       text2+=ch.upper() 
      else: 
       text2+=ch.lower() 

     else: 
      indexes+=str(text.index(ch))+" " 
      text2+=ch 
    return (text2 + " :Indexes: " + indexes) 
+1

У вас возникли вопросы? –

ответ

1

Вы не можете использовать индекс или потерпит неудачу для повторных символов, как индекс всегда будет возвращать первый матч, вы можете использовать enumerate, чтобы получить индекс каждого символа, как вы итерацию над текстом:

def swapCaseWithIndexes(text): 
    text2 = "" 
    indexes = "" 
    for ind, ch in enumerate(text): 
     if not ch.isalpha(): 
      indexes += " " + str(ind) 
     elif ch.islower(): 
      ch = ch.upper() 
     else: 
      ch = ch.lower() 
     text2 += ch 
    return text2 + " :Indexes: " + indexes 

Теперь он будет обрабатывать repeatd символы отлично:

In [13]: swapCaseWithIndexes("foo123BAR123!") 
Out[13]: 'FOO123bar123! :Indexes: 3 4 5 9 10 11 12' 
1
def swapCase2(txt): 
    return txt.swapcase(),[i for i,c in enumerate(txt) if not c.isalpha()] 
+0

Я думаю, что точкой функции является создание swapcase;) –

+0

его встроенный: P вам даже не нужен импорт –

+0

lol, я думаю, что это скорее всего задание. –

Смежные вопросы