2016-12-20 5 views
-1

Когда я исполняю прилагаемый код, я хочу, чтобы это:печать каждого элемента в списке

return sub_list 

Для всех sub_lists в mainList (9 sub_lists в общей сложности). Как я могу это сделать?

  for sub_list in mainList: 
      sub_list = sub_list.split(",") 
      if len(sub_list) == 9: 
       for i in sub_list: 
        try: 
         i = int(i) 
        except ValueError: 
         return "Error! has to contain integers only" 
        else: 
         i = str(i) 
       print(sub_list) 
      elif len(sub_list) > 9: 
       return 'Error! more than 9 numbers in a line' 

когда код преобразования приложений это то, что приходит:

['3', '8', '0', '4', '0', '0', '7', '0', '2'] 
['0', '0', '0', '7', '2', '0', '0', '0', '0'] 
['0', '0', '0', '7', '2', '0', '0', '0', '0'] 
['0', '2', '4', '8', '0', '6', '9', '0', '0'] 
['0', '0', '0', '0', '0', '0', '0', '0', '0'] 
['0', '0', '1', '2', '0', '3', '5', '4', '0'] 
['0', '0', '0', '0', '5', '8', '0', '0', '0'] 
['9', '0', '3', '0', '0', '4', '0', '2', '8'] 
['0', '0', '8', '0', '0', '0', '0', '5', '7'] 
['3', '8', '0', '4', '0', '0', '7', '0', '2'] 
['0', '0', '0', '7', '2', '0', '0', '0', '0'] 
['0', '0', '0', '7', '2', '0', '0', '0', '0'] 
['0', '2', '4', '8', '0', '6', '9', '0', '0'] 
['0', '0', '0', '0', '0', '0', '0', '0', '0'] 
['0', '0', '1', '2', '0', '3', '5', '4', '0'] 
['0', '0', '0', '0', '5', '8', '0', '0', '0'] 
['9', '0', '3', '0', '0', '4', '0', '2', '8'] 
['0', '0', '8', '0', '0', '0', '0', '5', '7'] 
+1

Вы можете только «вернуть» один раз. Если вам нужно вернуть девять вещей, почему бы не поместить эти списки в другой список или кортеж? – jonrsharpe

+0

Они alredy в списке (mainList), проблема в том, что я хочу распечатать каждый sub_list в новой строке. –

+0

Неясно, какую логику вы ожидаете здесь. Необычно возвращать строку сообщения об ошибке, а не просто * поднимать ошибку *. Вы хотите напечатать все девять, но только если все они содержат ровно девять целых чисел (или строки или поплавки, которые могут быть преобразованы в целые числа)? Просьба уточнить материалы и ожидаемые результаты. – jonrsharpe

ответ

0

Одной из проблем является i = int(i). Это не будет обновлять значения в списке. Вместо того, чтобы для: ING, чтобы превратить их в Интс вы можете использовать список понимание: (я изменил как мало, как я мог)

for sub_list in mainList: 
    sub_list = sub_list.split(",") 
    if len(sub_list) == 9: 
     try: 
      # Create a new list that is printed 
      print([int(i) for i in sub_list]) 
     except ValueError: 
      return "Error! has to contain integers only" 
    elif len(sub_list) > 9: 
     return 'Error! more than 9 numbers in a line' 
    else: 
     return 'Error! less than 9 numbers in a line' 

Это имеет тот недостаток, что если у вас есть ошибка в вашем последнем списке, все другие действительные списки до этого будут напечатаны. Если вы хотите только распечатать их, если у вас нет ошибок, вам придется сохранить их в (временном) списке, который вы печатаете или возвращаете после цикла for.

+0

Я пробовал это, в результате получилось: [3, 8, 0, 4, 0, 0, 7, 0, 2] [0, 0, 0, 7, 2, 0, 0, 0, 0] [0, 0, 0, 7, 2, 0, 0, 0, 0] [0, 2, 4, 8, 0, 6, 9, 0, 0] [0, 0, 0, 0, 0 , 0, 0, 0, 0] [0, 0, 1, 2, 0, 3, 5, 4, 0] [0, 0, 0, 0, 5, 8, 0, 0, 0] [9, 0, 3, 0, 0, 4, 0, 2, 8] [0, 0, 8, 0, 0, 0, 0, 5, 7] [3, 8, 0, 4, 0 , 0, 7, 0, 2] [0, 0, 0, 7, 2, 0, 0, 0, 0] [0, 0, 0, 7, 2, 0, 0, 0, 0] [0, 2, 4, 8, 0, 6, 9, 0, 0] [0, 0, 0, 0, 0, 0, 0, 0, 0] [0, 0, 1, 2, 0 , 3, 5, 4, 0] [0, 0, 0, 0, 5, 8, 0, 0, 0] [9, 0, 3, 0, 0, 4, 0, 2, 8] [0, 0, 8, 0, 0, 0, 0, 5, 7] sub_lists, где дважды печатаются –

+0

В этом случае вы, кажется, дважды их используете в своем mainList. Как вы можете видеть, существует только одна заявка на печать для каждой итерации цикла. – Moberg

+0

также, как я могу поместить код в строку комментария? Я новичок в стеке потока. –

0

Попробуйте это -

for sub_list in mainList: 
    if len(sub_list) == 9: 
     ans = [] 
     for num in sub_list: 
      ans.append(str(num)) 
    return ','.join(ans) 
+0

Весь смысл второго цикла состоял в том, чтобы превратить «i» в «int» ... –

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