저는 파이썬에서 2D 무작위 워커 프로그램을 만드는 초심자입니다 (& 아래로 왼쪽, & 오른쪽). 나는 보행자가 방문한 위치로 가지 않기를 바란다.Python의 'in'연산자가 배열에서 작동하지 않습니다.
그래서 일부 배열을 만들었고 하나는 좌표의 히스토리를 수집하는 배열입니다. 그리고 특정 위치에 가능한 옵션을 반환하는 함수도 정의했습니다. [[0, 0], [0, -1], [0 :이 기능이 ...
에
현재의 역사를
def opt(histo,cur):
tmp=[]
tmp.append([cur[0]+1,cur[1]])
tmp.append([cur[0]-1,cur[1]])
tmp.append([cur[0],cur[1]+1])
tmp.append([cur[0],cur[1]-1])
tmp.remove(histo[-2])
print "current history : ",histo
print "current tmp : ",tmp
print "current pos : ",cur
for i in tmp:
if i in histo:
print str(i)+" was detected!!"
tmp.remove(i)
return tmp
코드 결과를하지 않는 것 같다 -2, -1, -2], [-1, -1], [-2, -1], [-2,0], [-3, 0], [-3, -1] [-3, -2], [-3, -3], [-4, -3], [-5, -3], [-6, -3], [-7, -3] -7, -2], [-6, -2], [-5, -2], [-5, -1], [-4, -1], [-4, -2]]
현재 tmp : [[-3, -2], [-5, -2], [-4, -3]]
현재 위치 : [-4, -2]
[-3, -2]가 감지되었습니다.
[-4, -3]이 감지되었습니다! 제거 후
: [-5, -2]
....
이유 [-5, -2,이 경우 안전?
목록의 데이터 구조가 잘못되었습니다. 튜플을 포함하는 세트를 사용하십시오. –
형식화 문제와 별도로 질문을 읽을 수 있도록하십시오. 언어는 이해하기가 어렵습니다. –
또한, 반복되는 목록을 돌연변이하는 것은'.remove()'처럼 반복자를 엉망으로 만듭니다. 루프가 모든 것을 덮지는 않습니다. –