2016-08-15 3 views
-1

Я свяжусь, чтобы решить следующий вопрос на сайте конкурентного кодирования, где мне нужно преобразовать '->' в '.' только в разделе кода, но не в комментариях. https://www.hackerearth.com/problem/algorithm/compiler-version-2/IndexError: индекс за пределами диапазона в python

Я попытался написать решение, но каждый раз, когда я запускаю его, он дает мне сообщение IndexError. Некоторая помощь очень ценится. Ниже мое решение

import copy 
temp_list = [] 

while True: 
    string = input() 
    if string != "": 
     temp_list.append(string) 
     string = None 
    else: 
     break 

for i in range(len(temp_list)): 
    j = 0 
    while j <= (len(temp_list[i]) - 2): 
     if string[i][j] == '-' and string[i][j + 1] == '>': 
      #print("Hello WOrld") 
      temp_string = string[i][:j] + '.' + string[i][j + 2:] 
      string[i] = copy.deepcopy(temp_string) 
     elif string[i][j] == '/' and string[i][j + 1] == '/': 
      #print("Break") 
      break 
     else: 
      #print(j) 
      j += 1 

for i in temp_list: 
    print(i) 
+0

Можете ли вы разместить полную проверку ошибок? – Harrison

+0

много проблем здесь, не знаю с чего начать – mic4ael

ответ

0
  1. if string такая же, как if string != ""
  2. temp_list это список, так что вы можете петлю над ним в более вещий образом for i in temp_list
  3. string является переменной типа str так вы cann't это так: string[i][j] (я думаю, вы хотели использовать temp_list в таких случаях)

Что-то вроде этого ниже должно работать:

import copy 
temp_list = [] 

while True: 
    string = raw_input() 
    if string: 
     temp_list.append(string) 
     string = None 
    else: 
     break 

for i in temp_list: 
    j = 0 
    while j <= (len(temp_list[i]) - 2): 
     if temp_list[i][j] == '-' and temp_list[i][j + 1] == '>': 
      #print("Hello WOrld") 
      temp_string = temp_list[i][:j] + '.' + temp_list[i][j + 2:] 
      temp_list[i] = copy.deepcopy(temp_string) 
     elif temp_list[i][j] == '/' and temp_list[i][j + 1] == '/': 
      #print("Break") 
      break 
     else: 
      #print(j) 
      j += 1 

for i in temp_list: 
    print(i) 
+0

Я получил свою ошибку, это была глупая ошибка! Спасибо, что указали на это –

+0

Могли бы вы поддержать мой ответ, так как я не знаю, почему он был downvoted – mic4ael

+0

извините, но я не могу ни продвигать, ни загружать ответ, потому что у меня нет достаточной репутации, поскольку я новичок в Stackoverflow. –

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