스터디/Python

3. 구조와 제어

elenalee 2024. 4. 21. 08:51

1.  기본 구성 

 

▣ 에코 기능 

- 문자, 숫자 등 단순입력에 대해 파이썬 인터프리터가 출력을 반복

- 기본적인 연산 기능 ( 거듭제곱은 '**'으로 시행 )

- 문자간 '+' 연산 : concatenate

 

 주석 

- '#' 문자이용

- Colab은 Text기능 이용가능 

 

1) 식별자

- 프로그램 내부에 정의된 객체(변수, 함수)의 이름

- 문자나 밑줄로 시작되고, 숫자/문자/밑줄로 구성, 예약어와 동일할수 없음, 길이제한 없음 

  ** 예약어 : Flase/True, import, async/await, if/else, try, def, class, with, return 등등

 

 변수

- 처리할 데이터와 처리된 결과를 임시적으로 저장하는 공간 

- 변수의 값을 변경하는 할당 연산자 사용 ( = )

- 할당연산자 (=)의 오른쪽은 rvalue(임시적 대상), 왼쪽은 lvalue(지속되는 대상)

- 메모리에 공간을 할당하여 주어진 변수의 이름으로 값을 저장

 

부피와 겉넓이 출력_변수적용

 

2) 리스트 활용 

- 순서화된 값의 집합체를 저장할수 있는 데이터 타입 (여러 데이터 타입 혼재가능)

- 단일 식별자로 연속된 저장공간 접근 수단 제공

- 원소들의 순서를 표현, 개별 원소의 값을 수정/추가/삭제가능

- 구문 형식 (인용부호 [ ]를 사용, 원소는, 를 사용하여 나열 )

   list ( [ 원소 시퀀스 ] ) 혹은 [원소 시퀀스] 

- 원소의 나열을 저장할수 있는 시퀀스 타입 (리스트, 튜플, 세트, 딕셔너리)중 하나

   ex) hei_list = [1,4,5,"dark brown","black"] 

          ➡  hei_list 참조변수, [1,4,5,"dark brown","black"] 리스트객체

- 인덱스 연산자 ( 접근연산자 []사용, 원소내 인덱스 번호로 접근 )

 

리스트 생성자동화 

-리스트 내 원소에 규칙성이 있는 경우 생성자동화를 위한 함수 사용

  range(a,b,k) a부터 b이전((b미포함)까지 k씩 증가(디폴트 a:0, k:1)

 

 

 

3)  파이썬 내장함수

파이썬 인터프리터에서 기본적으로 지원하는 함수(별도의 모듈이나 패키지 없이 사용)

print(), max(), round(), min(), abs(), pow()거듭제곱

 

① 사용자 입력함수 : input()

- 입력데이터를 문자 데이터 타입으로 반환 

- 함수의 파라미터는 입력 안내문의 목적으로 사용됨

 

② 출력함수 : print()

- 여러개의 데이터를 단일 함수로 출력 가능, 콤마(,)로 파라미터를 구분하여 입력가능

- 데이터 사이에 공백(기본값)이 자동으로 추가 : sep옵션을 변경하여 기본 공백변경가능

 

 데이터 타입 변환 : 데이터 타입을 다른 타입으로 전환

문자열로 변환(str()), 정수타입의 변환(int()), 소수타입으로 변환(float())

 

④ 문서 형식화 : format( )

 데이터를 양식에 맞춰 형식화

     형식지정자 : s(문자열), .xf(x자리수의 소수를 가진 실수), d(정수)

 

▣ 문자데이터 및 정수데이터 정형화 

 

 실수데이터 정형화 

 

zip : 여러 리스트의 값들을 순서대로 하나씩 엮어서 가져오는 함수 

   예) for rad, hei in zip(rad_list, hei_list): 

 

⑥ range : 규칙성이 있는 배열의 자동 생성함수 화를 위한 함수 사용

    예) range(1,100): 1부터 99까지 1간격으로 생성,  range(100):0부터 99까지 1간격으로 생성

         range (a, b, k), a부터 b이전까지, k간격으로 배열생성 (디폴트 a:0, k:1)

 

4) 연산자 

연산자 우선순위 : 표현에 사용된 여러 연산자의 연산 순위를 결정

괄호 내부의 수식 >> 지수(**)연산자 >> 곱셈/나눗셈/나머지 연산(왼-오) >> 덧셈/뺄셈 (왼-오) >> 할당 연산자

 

① 산술 연산자 

- 피연산자(operand)에 대해 지정된 산술연산을 지시하는 기호 

   단항연산자 (unary operator) 

   이항연산자 (binary operator) 

   예) 3.14(피연산자) * rad(피연산자) 

 

② 특수 산술연산자 

- 프로그래밍 언어에서만 사용되는 연산 또는 부호 

  // (정수나눗셈 연산, 나눗셈 후 정수만 남김), %(모듈로 연산자)

 

③ 논리연산자 

- 참,거짓을 구별할수 있는 명제를 대상으로 명제의 집합을 위해 고안한 연산자

- 두개의 논리값(불리언식)을 연산하여 참, 또는 거짓을 결과로서 얻는 연산자

    - 두개의 피연산자를 갖는 이항연산자 (피연산자는 불리언)

    - and(논리곱)/or(논리합)/not(논리부정) 연산자사용, 왼쪽에서 오른쪽으로 결합

- 이항연산자 (and, or), 단항연산자 (not)

- 단락평가(short-circuit evaluation, C나 Java에서는 예상치 못한 결과를 도출할수 있음)

   첫번째 논리값으로 전체연산결과 판별이 가능할때 두번째 논리값은 확인(평가)하지 않음

 

 

5) 동시할당

 

할당 

 - 시퀀스 개념, 복수개의 변수에 값을 동시에 할당, 하나의 할당 연산자로 여러 값 전달 )

    복수개의 변수에 상응하는 값을 콤마(,)로 나열 (r-value쪽에 나열)

 

swap(교환)

 

예) 동시 할당 및 교환을 사용한 정렬 

 

 

2.  제어  

1) 파이썬 제어 구조

구조적 프로그래밍 패러다임 

- 절차적 프로그래밍 패러다임의 하위개념

- Edgar Dijkstra제안 ( 관련 논문: Go to Statement Considered Harmful )

   goto문을 사용하지 않고 프로그램을 3가지 제어구조로만 구성

- 3가지 제어구조 ( 순차구조, 선택구조, 반복구조 )

- 프로그램 실행흐름이 간결하고 작은 규모로 조직화하기 쉬움 

 

① 순차구조 (sequential structure)

- 실행 흐름이 주어진 명령의 위치적 흐름에 따라 수행

- 명령라인이 위에서 아래로 흐르는 직관적 구조

- 첫 단계를 시작하면 마지막 단계까지 수행 

 

 

② 선택구조

특정 영역내의 명령문에 대한 실행여부를 프로그램 실행중에 결정(실행여부는 조건에 따라 결정)

선택구조, 이분 선택구조(if, else), 다분선택구조(if, elif, else(필수는 아님))

- 들여쓰기로 코드 블록표현, 특정 동작을 수행하는 명령문 집합, 스페이스 4칸 권고(PEP-8)

- boolean식 : 비교연산자를 사용하여 결과가 boolean type ( <,>,>=,<=,==, !=)

boolean type 

- 참과 거짓의 값을 표현하는 데이터 타입 ( True, False 예약어로 표현)

- 비교연산자를 사용한 표현식의 결과

예) surf = 10

      vol = 20

     isStop = surf == vol 

     print(isStop)  ▶ False (surf와 vol은 같지 앖음)

 

▣ 다분 선택구조

if boolean식 : 

   명령문 1 (들여쓰기로 조건에 따른 실행표현)

   명령문2 

elif boolean식 

   명령문 3

   명령문 4

else : 

   명령문 5

   명령문 6

 

 중첩 선택구조

if out불리언 식 :

   if in불리언 식 :

       in 명령문 1

   else : 

       in 명령문 2

  else :

      if in불리언식2 :

         in명령문 3

 

 

③ 반복구조 

- 특정 영역의 명령문여러번 재실행하는 구조

- 조건에 따라 반복횟수 결정 

- loop, iterate, repeat등의 용어가 혼용 

- 반복 종료의 조건 : sentinel 

 

▣ 조건제어반복

         while 반복-계속-조건(반복구조설계전략) :

                             코드블록 

구구단 출력코드

▣ 계수제어반복 ( 계수제어변수와 시퀀스 사용, 반복시 계수제어변수에 시퀀스 원소 할당 )

      for 계수제어변수 in 시퀀스

           코드블록

 

 

리스트를 이용한 계수제어반복

 

▣ 중첩반복구조 

       반복 구조내 다른 반복 구조를 포함 ( for/while문안에 for/while문 중첩 )

 

 

 

2) 프로그래밍 에러

- 설계미숙, 결함 또는 문법 오류로 프로그램이 의도한 대로 결과를 생성하지 못하는 문제

구문 오류(syntax error) : 문법 체계에 적합하지 않은 명령문 입력시 발생

실행 오류(runtime error) : 논리적으로 실행불가능한 명령문 작성 시 발생

   ex) input값으로 계산 시도 (python의 사용자가 입력하는 모든 input값을 문자열로 취급) 

의미 오류(semantic error) : 의미적으로 잘못 해석되는 명령문 작성 시 발생 

   ex) "=="대신에 "="사용

 

 

** 아래한글이나 MS-Word에서 복사해서 붙이거나 인터넷의 코드는 부호가 다를 수 있음

    - Unicode기준으로는 부호의 차이가 있음 (특히 ", '의 부호가 다름 )

** 실습 도구 : colab.research.google.com (오픈소스, 문서화쉬움,클라우드기반)

 

** 기본 개념 (시험 대비)

    파이썬에서의 데이터 타입변경 : 가능 (str(), int(), float()등의 함수를 이용하여 변경)

    파이썬 인터프리터에서 지원하는 함수 : 내장함수

    구조적 프로그래밍 패러다임에서 제안된 제어구조 : 순차, 반복, 선택

    클라우드 기반, 오픈소스, 문서화 용이, 대화형 실행환경 : 코랩

    폰노이만 구조, 운영체제 (한정된 자원을 효과적으로 사용 : 프로세스관리), 

 

'스터디 > Python' 카테고리의 다른 글

6. 실습 - 게임구현  (0) 2024.05.04
5. 모듈과 파일  (0) 2024.05.03
4. 함수와 객체  (0) 2024.05.02
2. 파이썬 Basic  (0) 2024.04.20
1. 정보 및 컴퓨터 구성  (0) 2024.04.20