프로그래밍에서는 다양한 상황이 벌어지는데, 그 중에서 조건에 맞는 객체만 골라서 통과시키거나 거부해야 하는 상황이 자주 발생합니다. 파이썬에서는 if 문을 활용하면 되는데, 실제로 어떤 상황에서 어떻게 적용하게 되는지 간단한 예제로 살펴봅시다.
반복문에서의 조건문 활용
mylist = [
"강남_지사1",
"강남_지사2",
"강동_지사3",
"강서_지사4",
"강서_지사5",
"강북_지사6",
"강북_지사7",
"강북_창고1",
"강북_창고2",
"의정부_지사8",
"남양주_지사9",
"수원_안전가옥",
"태안_창고3",
"강릉_소극장",
"속초_연구동1",
"나주_연구동2",
"경주_지사10",
"부산_지사11",
]
myresult = []
for i in mylist:
if "강남" in i or "강북" in i or "수원" in i or "부산" in i:
myresult.append(i)
위의 코드를 보시면, 각 지역마다 관리해야 하는 특정 시설이 있고, 이 시설들 중에서 강남, 강북, 수원, 부산에 있는 시설들만 골라서 리스트로 만드는 코드라는 것을 알 수 있습니다.
이때 for 문 내부에서 if 를 통해, 리스트의 각 원소가 우리가 결정한 기준에 맞는 지 아닌지를 판가름 한 뒤, 참이면 통과시키고, 아니면 걸러주고 있습니다.
코드를 실행한 결과를 보여드릴텐데, 앞으로 특별한 이유가 있지 않으면, Visual Studio Code와 같은 IDE보다는, Dynamo Sandbox내부에서 파이썬 노드를 열어서 보여드리도록 하겠습니다.
BIM 을 공부하시는 분들이 형상객체를 이용해서 나중에 연계하기도 편하고, 코드와 실행결과를 나란히 보기도 편하기 때문입니다.
실행결과가 잘 도출된 것을 확인할 수 있죠? 강남, 강북, 수원, 부산의 시설만 필터링 되었습니다.
대상에 맞는 함수 실행여부 결정
위에서 찾아낸 목록 중에서
해당 시설이 지사이면 “지사장 파견 필요”이라는 문구를 뒤에 덧붙이고,
안전가옥이면 “시설 폐쇄”라는 문구로 대체하고,
창고라면 “<면적 확대예정>” 라는 문구를 앞에 덧붙여 출력하고 싶다고 합시다.
그러면 함수를 3가지 만들고 if 문으로 조건에 맞게 적용해 주면 되겠죠?
다이나모 샌드박스에서는 앞서 만들었던 결과를 input 포트(적색 테두리)로 받아와서 연쇄적으로 코드를 실행할 수 있습니다.
위 그림을 보시면 파란색 테두리에서 ‘지사처리’, ‘안가처리’, ‘창고처리’ 라는 함수를 만들어서 해야 할 기능을 정했고,
초록색 테두리의 for 문에서 리스트의 원소를 하나씩 조회할 때마다, 시설의 종류에 맞춰 함수를 적용하도록 코드를 작성했습니다.
결과는 실행결과2에 나온 것 처럼 문구들이 수정되거나 잘 대체되었음을 확인할 수 있습니다.
다이나모 샌드박스 다운로드 관련 포스트 참조하여 실제로 따라해보셔도 좋을 것 같습니다.
'흔한말 (collection) > Python' 카테고리의 다른 글
정규표현식 잘 몰라도 코드 짤 수 있어요 (0) | 2022.03.04 |
---|---|
Python For 문을 연습하는 방법(feat. Revit Dynamo) (0) | 2022.03.01 |
Jupyter Notebook을 환경설정 없이 간편하게 쓰는 방법? (0) | 2022.02.21 |
Python 리스트 컴프리헨션 맛보기(할-짝) (0) | 2022.02.16 |
내장 함수 enumerate() (0) | 2022.02.03 |