«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags more
Archives
Today
Total
관리 메뉴

장미의 개발일기

파이썬 프로그래밍 : 6강 선택구조 , 7강 반복구조 본문

방통대 컴퓨터과학과

파이썬 프로그래밍 : 6강 선택구조 , 7강 반복구조

민장미 2023. 4. 17. 00:34

강의 하루에 5개 들으니 죽을거 같음

이게 파이썬이 아니라 자바였다면 못했을 듯

 

선택구조 

대표적으로 if문:

 

if  불리언식 : 
    명령문1
    명령문2

*else if = elif 

 

불리언식 (true or false) : true => 명령문 1,2, 순차진행   /  false => 명령문 실행 안하고 다음 코드로 넘어감

***들여쓰기 반드시 지키면서 작성할 것 !!

 

*불리언식: 비교연산자 ( > , <, =,  !)를 사용하며, True or False 값을 반환하는 식

ex) light = 3 > 6 이런식으로  light 변수에 false 값을 저장 가능(자바와 유사)

 

*단락평가 ( short-circuit evaluation) : 

조건문의 맨 앞이 참이여서 그 문장 전체가 참이나 거짓으로 확정일 경우, 그 뒤의 조건은 안 읽는 것 

(메모리 절약 효과)

ex)  3 > 2 || 4 > 6   => 첫 조건에서 참, or조건이니 이미 참이 확정이므로 뒤의 조건은 안 읽고

True로 반환 

 ( 이게 자바와 C와의 다른 차이점이라고 하셨는데... 자바에도 비트연산자만 뒤의 조건까지 다 읽지, 

그냥 불리언 연산자는 이거랑 똑같은 걸로 알고 있는데??? )

 

 

* 중첩선택구조

다른 언어는 이론 강의만 했었구, 출석수업 시간에 잠깐 간단한 실습정도 했었는데

파이썬은 신설된 강의라 그런지 업그레이드된 방식인 것 같다~~

 

실습으로 이것 저것

간단한 if문
불리언식 출력

 

*원의 부피, 겉넓이 구하기 if-else 

둘 중 하나 음수면 오류 메세지 반환 

 

1.정상 출력 

2. 오류 메세지 반환 

 

여기서 조금 더 변환해봄 

 

 

 

 

*세 숫자에서 가장 큰 수를 찾기*

 

1. 쉬운 버전

max 함수쓰면 끝 초간단

 

2. 중첩선택구조

프로그래밍 언어를 처음 접하는 사람이면 좀 헷갈릴 듯...

if랑 else 줄 맞추는 거 은근 실수 잦았다;; 흠 

여기까지가 6강

 

 

반복구조

반복관련 단어: loop, iterate, repeat ** 반드시 암기

 

구문형식

1. 조건 제어 반복 ( 반복여부를 매번 판단)

while  반복 - 계속 조건 :

      코드블록

 

자바와 비슷함 다만 많이 놀란게 있는데,  증감식 문장대신 자바에서처럼 count++로 넣어봤더니

.... 파이썬에는 단항증감연산자가 없나봄 ㄷㄷㄷ 와?? 신선해

무튼 1~5, 5번 반복 

출력 결과 (광기에 차보임)

-----

또 다른 예시 ~

print 마지막 줄 ! 들여쓰기 안되도록 주의 해야한다

들여쓰기 해버리면 아래 처럼 sum이 10번 반복해서 출력됌 

 

* 구구단 출력하기*

마지막 증감식 들여쓰기 꼭 주의 잘못하면 무한루프 지옥되버림

 

 

 

 

2.계수 제어 반복 (반복횟수를 미리 제시한다) / 리스트랑 연관지어서 공부 

 

for  계수 -  제어  - 변수 in  시퀀스 :

    코드블록

 

(시퀀스란 리스트같은 형태의 자료형을 말하는 듯? )

 

*리스트* : 자료형 

: 문서화된 값의 집합체를 저장할 수 있는 시퀀스 데이터 타입의 일종이다.

: 순서화된 값의 집합체를 저장할 수 있는 데이터 타입 (참조형 변수 = 리스트 객체)

(이외에도 참조형 자료형으로 세트,투플, 딕셔너리 등이 있다)

 

*   [ 1, 3, "dark sky", 23] 이런식으로 다양한 자료형이 함께 들어갈 수 있다.

*   원소들의 순서를 표현한다 (인덱스번호: **** 0부터 시작 !!!!

*   number_list  이런식으로 이름을 짓는다.  number_list = [ 1, 2, 3, 4, 5, 6 ]

 

 

 

*인덱스 연산자*

어떻게 원소에 접근할까? => 인덱스연산자 [ , ] 사용

각 원소는 왼쪽부터 인덱스번호가 부여되는데 0부터 시작된다.

ex)  number_list = [ 1, 2, 3, 4, 5, 6 ]

number_list[0] = 1 

number_list[1] = 2

number_list[2] = 3

 

 

리스트 출력해보기

 

**만약 원소들 사이에 규칙성이 있다면? =>  range 함수를 사용하라!!!

range( a, b, k)  =>  a부터 시작해서 b 보다 작은 값까지 , k씩 증가 시켜서 

시퀀스를 생성해준다. (k는 생략시 기본값인 1이 자동으로 지정됌)

ex) range( 10, 31, 5) =>  [ 10, 15, 20, 25, 30 ]

range( 10 , 20) =>  [ 10, 11, 12, 13,14,15, 16,17,18, 19]

 

*zip함수도 이용하라 (리스트에서 여러원소를 빼올 때 !!)

원소1, 원소2 in zip( 리스트1 , 리스트2 )

ex) rad, hei in zip(rad_list, hei_list)

 

zip,range ,계수제어문 => 리스트 활용하기 : 반지름은 규칙적, 높이는 불규칙적인 리스트의 원뿔 부피와 겉넓이를 각 구하기

 

 

4. 중첩 반복 구조

for 계수 - 제어 - 변수1 in 시퀀스1 : 
      for 계수 -제어- 변수2 in 시퀀스2: 
           명령블록 

 

 

*Format 함수: 데이터를 양식에 맞춰 형식화해줌

Format( 변경대상 데이터, 형식지정자)

ex) Format("구구단표", ">10s")
><: 정렬방향
10: 필드 폭 
s: 문자열이라는 의미 (정수는 d)

 

1. 문자열의 경우 (왼쪽정렬이 기본)

 

문자열인데 오른쪽정렬로 할 경우 (기본으로할거면 기호생략)

Format("구구단표", ">10s")   =>   (000000)구구단표

 

2.정수:  우측정렬이 기본 (d=정수)

 

정수인데 왼쪽정렬로 하고 싶은 경우

(1234, "<10d")  => 1234000000    /0은 빈공간을 의미한다.

 

 

*print 함수의 다른 옵션: end =""     => 줄바꿈 없이 다음줄과 붙어서 출력해라

 

 

 

 

구구단 만들기로 중첩제어구문 연습 

ㅠㅠ 이건 이해를 지금도 몬함... 몰라... 12시반 넘었어 자야해

머리론 대강 이해함