Уведомления

Группа в Telegram: @pythonsu

#1 Март 29, 2019 13:56:28

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Помогите найти ошибку.

Kenci
нет двоеточия



Офлайн

#2 Март 29, 2019 16:16:49

Kenci
Зарегистрирован: 2019-03-28
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите найти ошибку.

Спасибо,это помогло.Но я пока сам искал,нашел оператор // и чуть свернул код.
Даже как-то стыдно что так затупил ;d

Отредактировано Kenci (Март 29, 2019 16:25:45)

Офлайн

#3 Май 8, 2019 12:15:26

N88995
Зарегистрирован: 2019-03-22
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите найти ошибку.

Всем добрый день! Снова прошу помощи. Дана следующая задача:
Выведите таблицу размером 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


Огромная просьба: подскажите, где моя ошибка, и направьте, что почитать, чтобы решить эту задачу. Заранее большое спасибо

Офлайн

#4 Май 8, 2019 12:54:19

Egorro13
Зарегистрирован: 2019-04-16
Сообщения: 105
Репутация: +  5  -
Профиль  

Помогите найти ошибку.

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])

Отредактировано Egorro13 (Май 8, 2019 12:55:31)

Офлайн

#5 Май 8, 2019 12:57:39

N88995
Зарегистрирован: 2019-03-22
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите найти ошибку.

Большое спасибо! Теперь поняла свою ошибку)

Офлайн

#6 Май 8, 2019 13:53:05

N88995
Зарегистрирован: 2019-03-22
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите найти ошибку.

Еще один вопрос: продолжаю решать ту же задачу, описанную двумя комментариями выше. Пишу код:

 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
Остальное пока не дописано, т.к. застряла. Может быть, мой путь решения задачи никуда не годится. Объясните, пожалуйста.

Офлайн

#7 Май 8, 2019 15:52:03

Egorro13
Зарегистрирован: 2019-04-16
Сообщения: 105
Репутация: +  5  -
Профиль  

Помогите найти ошибку.

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 раз.

Отредактировано Egorro13 (Май 8, 2019 15:52:37)

Офлайн

#8 Май 8, 2019 15:54:56

N88995
Зарегистрирован: 2019-03-22
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите найти ошибку.

Большое спасибо! Сейчас попробую)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version