Найти - Пользователи
Полная версия: Помогите найти ошибку.
Начало » Python для новичков » Помогите найти ошибку.
1 2
FishHook
Kenci
нет двоеточия
Kenci
Спасибо,это помогло.Но я пока сам искал,нашел оператор // и чуть свернул код.
Даже как-то стыдно что так затупил ;d
N88995
Всем добрый день! Снова прошу помощи. Дана следующая задача:
Выведите таблицу размером n×n, заполненную числами от 1 до n2 по спирали, выходящей из левого верхнего угла и закрученной по часовой стрелке, как показано в примере (здесь n=5):
ввод:5
вывод:
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9

Пожалуйста, гляньте начало моего кода и подскажите, почему он не работает:
 n = int(input())
b = [[0 for j in range(n)] for i in range(n)]
for b[i][j] in b:
    if i == 0:
        print(b[i][j])
Пишет:
Traceback (most recent call last):
File “C:\Program Files\JetBrains\PyCharm 2017.2\helpers\pydev\pydev_run_in_console.py”, line 78, in <module>
globals = run_file(file, None, None)
1 2 3 4 5 6 File “C:\Program Files\JetBrains\PyCharm 2017.2\helpers\pydev\pydev_run_in_console.py”, line 35, in run_file
pydev_imports.execfile(file, globals, locals) # execute the script
File “C:\Program Files\JetBrains\PyCharm 2017.2\helpers\pydev\_pydev_imps\_pydev_execfile.py”, line 18, in execfile
exec(compile(contents+“\n”, file, ‘exec’), glob, loc)
File “CUsers/max/PycharmProjects/First project/Car.py”, line 6, in <module>
if b == 0:
NameError: name ‘i’ is not defined


Огромная просьба: подскажите, где моя ошибка, и направьте, что почитать, чтобы решить эту задачу. Заранее большое спасибо
Egorro13
N88995
 for b[i][j] in b:
В цикле for…in индексы не нужны в принципе, т.е. если перебирать b, будет что-то типа
 for bi in b: # в bi будет поочередно помещен каждый из элементов b
Поскольку b у тебя - список списков, то и bi при каждой итерации будет являться списком, его элементы надо перебирать уже вложенным циклом:
 for bi in b: # bi - каждый из элементов b, т.е. список
    for bij in bi: # bij - каждый из элементов списка bi (текущего элемента b)
        ...
Для обращения именно по индексам - цикл через range:
 for i in range(len(b)): # i - от 0 до длины b, т.е. кол-ва "строк"
    for j in range(len(b[i])): # j - от 0 до длины текущего списка, "элементы текущей строки"
        print(b[i][j])
N88995
Большое спасибо! Теперь поняла свою ошибку)
N88995
Еще один вопрос: продолжаю решать ту же задачу, описанную двумя комментариями выше. Пишу код:
 n = int(input())
b = [[0 for j in range(n)] for i in range(n)]
for i in range(n):
    for j in range(n):
        b[i][j]=1
for i in range(n):
    for j in range(n):
        if i == 0 and 0 <= j < n-1:
            b[i][j+1]=b[i][j]+1
        if 0 < i < n and j == n-1:
            b[i][j]=b[i-1][j]+1
        if i == n-1 and 0 <= j <n-2:
            b[i][n-2-j]=b[i][n-1-j]+1
for i in range(n):
    for j in range(n):
        print(b[i][j], end=' ')
    print()
Застопорилась на самой последней строке. Подскажите, пожалуйста, что не так. Нижняя строка в матрице выводится следующим образом:
1 2 3 4 5 6
1 1 1 1 1 7
1 1 1 1 1 8
1 1 1 1 1 9
1 1 1 1 1 10
1 5 4 3 2 11
Остальное пока не дописано, т.к. застряла. Может быть, мой путь решения задачи никуда не годится. Объясните, пожалуйста.
Egorro13
N88995
Может быть, мой путь решения задачи никуда не годится
Не очень понятно, как этот способ должен будет заполнять не крайние строки и столбцы, тем более что их количество заранее неизвестно и прописать все вручную не получится.
Недавно эту же задачу решал - использовал такую конструкцию:
 moves, current = [(1, 0), (0, 1), (-1, 0), (0, -1)], 0
moves - список из 4 направлений (x, y): (1, 0) - вправо (х + 1, y + 0), (0, 1) - вниз и т.д. Current - текущее направление движения. Заполнил исходную матрицу нулями и начал двигаться с ячейки (0, 0), перед каждым “движением” проверка: если следующая координата за пределами матрицы или ссылается на ненулевой элемент - направление меняется, и так n ** 2 раз.
N88995
Большое спасибо! Сейчас попробую)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB