도구들/R,파이썬

[파이썬] 다중 for 문에서 특정 조건 출력하기(if else) 생략하기(pass)(특정 년월일 선택,생략하기)

cactus 2022. 8. 2. 00:06

먼저 range 함수와 for 문을 통해 년월일을 출력하는 방법을 소개했다.

https://ryuhyun.tistory.com/83

 

[파이썬] for 문으로 년월일 출력해보기(다중 for문), range() 로 숫자 리스트 만들기

1부터 100까지 숫자를 리스트 형태로 만들고 싶은 경우 list=[1,2,3 ...] 이런식으로 일일히 입력하지 않고 range 함수를 통해서 숫자 리스트를 만들 수 있다. 1부터 10까지 숫자 리스트를 만들려고 하는

ryuhyun.tistory.com

이어서, 특정 년도, 월, 일을 선택하거나, 제외하기 위해 if else 문을 활용해보려고 한다.

 

2020~2022년 전체의 년, 월, 일을 나열하는 for 문을 다시 가져오자.

years=range(2020,2023)
months=range(1,13)
days=range(1,32)

for year in years:
    for month in months:
        for day in days:
            print(year,'년',month,'월',day,'일')

위의 글에서 확인할 수 있듯이.. 2020년 1월 1일부터 2022년 12월 31일까지 날짜가 주루룩 출력되는 코드이다.

 

1. 특정 조건 선택 출력하기(if 문)

 

이 결과에서, 나는 2022년도의 년월일만을 출력하고 싶다.

'2022년' 이라는 조건이 필요하므로, if 문을 사용한다.

파이썬 판별문에서 '같다'는 '==', '다르다' 는 '!=' 로 표현한다.

따라서 if의 조건식은 'year==2022' 로 표현될 수 있다.

 

2022년에 해당하는 년월일만 출력하는 코드는 다음과 같다.

for year in years:
    for month in months:
        for day in days:
            if year==2022:
                print(year,'년',month,'월',day,'일')

위처럼 입력하면 다음과 같이 2022/1/1 부터 12/31까지 출력된다.

 

for 문이 여러개인 경우에는, 원하는 조건을 어떤 for문에 걸어야 하는지 헷갈릴 경우가 많다.

위의 경우에서는 if 조건문을 가장 마지막 day 루프에 걸었으므로 마지막 단계에서 조건이 적용된 것이다.

알아보기 쉽게 구분하기 위해, 각 for 문마다 print 문을 삽입해서 확인하자.

for year in years:
    print(year,'년')
    for month in months:
        print(month,'월')
        for day in days:
            print(day,'일')

이렇게 입력하면, 순서대로 년, 월, 일 루프가 순서대로 돌아가는 걸 더 쉽게 확인할 수 있다.

위에 걸었던 if 조건식을 가장 마지막 day 루프에 걸어보자.

위의 년, 월 까지는 2022년이 아닌 년 월도 출력되지만,

day 루프에서 조건을 걸었으므로 일은 2022년의 경우에만 출력된다.

 

if 조건식을 year 루프에 걸어보자.

 

year 루프에서 조건을 걸었으므로, 아예 년도가 2022부터 시작한다. 월, 일 전부 2022년에 한해서 출력된다.

 

위와 같이, if 조건식은 삽입된 for 문의 위치에서 적용된다.

아래 이미지에 위의 루프의 단계별로 if 조건식이 걸릴 경우 어떤 값들이 넘어가는지 정리해보았다.

 

조건문이 삽입된 위치의 for 문에서 조건문이 적용된다는 것을 주의깊게 고려해서 코드를 작성해야 한다.

 

2. 특정 조건 제외 출력하기(if 문 pass)

 

위에서 선택한 것과 같이 조건으로 선택한 값들을 제외할 수도 있다.

if 로 조건을 작성하고, pass 를 입력하면 된다. (해당 조건일 경우 위에는 print 로 출력했다.)

 

이번에는 2020년도일 경우는 제외하고 출력해 보자.

아래처럼 if 조건문 아래에 pass 라고 입력한다.

if 조건이 아닐 경우에 대해서도, else 로 작성한다.

 

2020년도는 패스되고, 2021년도부터 출력된 걸 확인할 수 있다.

 

년도에 이어서 월도 조건을 걸어보자. 1월인 경우를 패스하고 출력하고 싶다. 아래처럼 작성한다.

 

1월이 패스되고, 2월부터 출력되는걸 확인할 수 있다.

위와 같이, for 문의 작동 순서를 기억하고

if 조건문을 적용시킬 위치에 맞게 작성하면 된다.

 

반응형