Найти - Пользователи
Полная версия: Мелкий вопрос по Python
Начало » Python для новичков » Мелкий вопрос по Python
1
Alladin
Здравствуйте всем!

Вот нашёл код для создания змеевидной матрицы.
def spiral(n):
dx,dy = 1,0 # Starting increments
x,y = 0,0 # Starting location
myarray = [[None]* n for j in range(n)]
for i in xrange(n**2):
myarray[x][y] = i
nx,ny = x+dx, y+dy
if 0<=nx<n and 0<=ny<n and myarray[nx][ny] == None:
x,y = nx,ny
else:
dx,dy = -dy,dx
x,y = x+dx, y+dy
return myarray

def printspiral(myarray):
n = range(len(myarray))
for y in n:
for x in n:
print "%2i" % myarray[x][y],
print

printspiral(spiral(5))
И у меня один вопрос: что значит в этом коде (встречается в двух местах)?
doza_and
None спец объект питона - который означает нет объекта. см док по питону он не совпадает ни с одним числом
что и используется в строке
if 0<=nx<n and 0<=ny<n and myarray[nx][ny] == None:
Alladin
myarray = [* n for j in range(n)]
А в этой строке он что значит?
sp3
матрица n на n из пустых объектов - None
py
Постеснялся создать новую тему, а то совсем нуб пока в Питоне. Подскажите, пожалуйста, вот по какому вопросу…
Написал такой код: мышь гоняет по екрану и на событие изменения курсора (всё через win32api) срабатывает действие.
Возможно ли локализовать работу етого кода только в нужном мне окне, чтобы я мог переключиться на другое и пользоваться мышью не влияя на мой скрипт?

Спасибо!
Alladin
А как из кода в первом посте сделать матрицу типа:
1 10 11 20 21
2 9 12 19 22
3 8 13 18 23
4 7 14 17 24
5 6 15 16 25

У меня получается повернуть направление спиралевидной, порядок хода чисел, а вот тут что-то вообще полный ноль… Подскажите, пожалуйста.
usmix
Alladin
А как из кода в первом посте сделать…
Не совсем как в первом посте, но должен подойти. Тут в различных вариациях:

#-*- encoding: cp1251 -*-

def hsnake(n, back, rev):
''''''
array = []
for i in range(n):
array.append([])
for j in range(n):
value = 1 + i * n + j if i % 2 else i * n + n - j
if back:
array[i].append(value)
else:
array[i].insert(0, value)

return reversed(array) if rev else array

def vsnake(n, back, rev):
''''''
array = []
for i in range(n):
array.append([])
for j in range(n):
value = 1 + j * n + i if j % 2 else j * n + n - i
if back:
array[i].append(value)
else:
array[i].insert(0, value)

return reversed(array) if rev else array

def output(title, snake, size):
''''''
print '#' * 25
print title
print '#' * 25
for array in snake:
for element in array:
print '%2.d' % element,
print

def main():
''''''
size = 5
table = {
'Horizontal.1': hsnake(size, True, False),
'Horizontal.2': hsnake(size, False, False),
'Horizontal.3': hsnake(size, True, True),
'Horizontal.4': hsnake(size, False, True),
'Vertical.1': vsnake(size, True, False),
'Vertical.2': vsnake(size, False, False),
'Vertical.3': vsnake(size, True, True),
'Vertical.4': vsnake(size, False, True)
}
for key in sorted(table.keys()):
output(key, table[key], size)

if __name__ == '__main__':
main()
Результат:

#########################
Horizontal.1
#########################
5 4 3 2 1
6 7 8 9 10
15 14 13 12 11
16 17 18 19 20
25 24 23 22 21
#########################
Horizontal.2
#########################
1 2 3 4 5
10 9 8 7 6
11 12 13 14 15
20 19 18 17 16
21 22 23 24 25
#########################
Horizontal.3
#########################
25 24 23 22 21
16 17 18 19 20
15 14 13 12 11
6 7 8 9 10
5 4 3 2 1
#########################
Horizontal.4
#########################
21 22 23 24 25
20 19 18 17 16
11 12 13 14 15
10 9 8 7 6
1 2 3 4 5
#########################
Vertical.1
#########################
5 6 15 16 25
4 7 14 17 24
3 8 13 18 23
2 9 12 19 22
1 10 11 20 21
#########################
Vertical.2
#########################
25 16 15 6 5
24 17 14 7 4
23 18 13 8 3
22 19 12 9 2
21 20 11 10 1
#########################
Vertical.3
#########################
1 10 11 20 21
2 9 12 19 22
3 8 13 18 23
4 7 14 17 24
5 6 15 16 25
#########################
Vertical.4
#########################
21 20 11 10 1
22 19 12 9 2
23 18 13 8 3
24 17 14 7 4
25 16 15 6 5
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