Python

Python : for, while문과 기타제어문

코딩딩코 2022. 2. 7.

제어문

 

반복문


for문

반복횟수를 알 때 사용하는 목적

for 변수명 in range(초기값, 끝값,증감값):
반복할 문장

0이 < 10 일때까지 1씩 증가하면서 반복

반대로 10 이 < 0 일때까지 1씩 감소하면서 반복

 

지금부터 여러가지 예제를 보겠습니다.

 

0 부터 짝수만 출력하는 문장

0부터 시작해서 100까지 2씩 증가하거나

곱하기를 통해서 짝수만 출력하거나

2로 나눴을때 나머지 값이 0이라면 짝수이기 때문에 %를 사용해도 됩니다.

 

ABCDEF 를 출력해야 하는 문제

초기값과 증가 값이 1 일때는 생략 가능합니다.

A가 아스키코드로 65인 것을 확인 가능합니다.

그럼 총 6번 반복해서 i + 65 를 하고 그 값을 chr 를 통해 문자로 바꿔준다면 ABCDEF 가 나올 수 있습니다.

i 는 0 이기 때문에 0 + 65 = 65 이고 65를 문자로 바꾼다면 A가 나옵니다.

B는 66, C는 67 이렇게 아스키코드표를 보면 1씩 증가하는 것을 볼 수 있습니다.

 

두번째로는 if 문을 사용해서 65부터 70까지만 출력하게 하고 그 값을 문자로 바꿔서 출력하게 만들 수도 있습니다.

 

이번에는 C를 제외하고 ABDEF 를 출력해야 합니다.

C는 2번째에서 나오는 것을 계산하고

if 문을 통해 i 가 2보다 크다면 1을 더해주면서 chr 로 문자로 바꿔준 다음 출력하면

ABDEF 가 출력되는 것을 볼 수 있습니다.

※ i에 값을 더해주면 range 안에서도 i 가 증가할 것 같은데 사실은 증가하지 않습니다.

그래도 i의 값을 바꾸기 싫다면 이렇게 만들면 됩니다.

temp라는 변수를 만들고 temp에 i의 값을 저장합니다.

if문에서 똑같이 i 가 1보다 커진다면 temp 에 1을 더해주고 temp를 통해서 출력하면 됩니다.

 

if 문을 통해서 i 가 67이면 공백을 출력합니다.

하지만 67이 아니면 거짓이므로 elif 로 가서 조건식을 따집니다.

elif 에서 and를 통해 65와 같거나 크고 70과 같거나 작다는 조건식을 통해

문자로 형변환 시킨 후 출력하면 ABDEF 가 잘 나오는 것을 확인 할 수 있습니다.

 

이번엔 aBcDeFgHiJkLmNoPqRsTuVwXyZ

를 출력할려고 합니다.

이것도 아스키코드를 참고해서 a는 97이고 B는 66 입니다.

소대소대소대 순으로 계속 되니 소문자는 홀수이고 대문자는 짝수로 반복되네요.

삼항 연산자를 통해 i가 2로 나눴을때 나머지가 없으면(짝수) 97을 i에 더해서 소문자가 나오고

아니라면 65에 i를 더해서 대문자가 나올 것 입니다.

그리고 줄바꿈을 없애기 위해서 ,end = ""를 붙여줍니다.

 

이걸 if문으로 만들어보면 i가 65와 같거나 크며 90와 같거나 작을때 실행합니다.

여기서 한번더 if문을 사용해서 i 를 2로 나눴을때 나머지가 0이라면 i 그대로 66으로 대문자 'B' 출력

아니라면 else문으로 들어가서 i에 32를 더해서 소문자 97로 더해서 소문자 'a' 출력

 

두번째는 0부터 26까지만 하고

그 값에 정수를 더해서 아스키코드에 접근하는 방식입니다.

 

====================================================

 

기타 제어문
break : 인터프리터가 break를 만나자마자 반복문 탈출
continue : 아래 문장을 하지 않고 다음 반복

 

i 를 10번 반복하는 문장에서 if문을 통해 i 가 3이 된다면 break 를 하도록 합니다.

위에서 밑으로 가기 때문에 i 가 3까지만 출력하고 밑에서 break를 만나 반복문을 탈출하게 됩니다.

 

이번엔 continue 를 사용해서 i가 3이라면 밑에 문장을 하지않고 다음 반복이기 때문에

3 + 1 = 4 그러니 4를 점프해서 4를 제외하고 반복문을 돌게 됩니다.

 

3과 5의 공배수를 출력하는 코드입니다.

뭔가를 3으로 나눴을때 나머지가 0이 3의 배수이고 뭔가를 5로 나누고 나머지가 0이 5의 배수입니다.

그럼 and 를 사용하면 공배수를 구할 수 있습니다.

i 에 1을 더한 이유는 i는 0부터 시작하기 때문입니다.

 

두번째는 not을 사용해서 공배수가 아니면 continue 를 통해 밑에 문장을 반복하지 말라는 코드내용입니다.

 

세번재는 != 연산자를 통해 공배수를 구합니다.

여기서는 and 가 아닌 or로 바꿔줘야 합니다.

 

마지막은 첫번째와 유사한데 i에 1을 더하지않고 0일때 continue 로 점프했습니다.


while문

 

while 조건식 :
반복할 문장

 

조건식이 참이면 반복
반복횟수를 모를 때 사용하는 목적(알 때는 for문을 쓰는게 적절)

무한 반복일 경우, 특정 조건에 break를 사용해서 탈출

 

cnt를 선언하고 cnt가 10이 아닐때 반복하라는 문장입니다.

{}.format(cnt) 를 통해 cnt 의 상황을 알려주고

마지막에 cnt+= 1을 통해 반복 한 번 할때마다 1씩 더해줘서 10이 되는 순간 반복문을 탈출하게 됩니다.

 

한번더 혈액형별 성격을 불러와서 while 문에 조건식을 변하지 않는 상수값인 True 를 넣으면 무한반복이 됩니다.

여기에 elif choice == 5 :

break 를 통해 5를 입력하면 break로 무한반복을 종료하게 합니다.

여기서는 while 문에서 result의 문자열이 "정답!" 이 아니라면 반복을 하고 맞다면 거짓이므로

반복문을 종료하게 됩니다.

그리고 if 문에서 정답이 아닌 것을 확인했기 때문에

elif 에서는 범위안에 들어오는 값을 입력했는지만 확인하면 됩니다.

'Python' 카테고리의 다른 글

Python : list의 사용 예제  (0) 2022.02.15
Python : list의 기본 설명  (0) 2022.02.15
Python : 저장공간과 값, 대입 연산자(누적 연산자)  (0) 2022.02.07
Python : if  (0) 2022.02.07
Python : 삼항 연산자  (0) 2022.02.07

댓글