20250109 모각코 활동 1회차

오늘의 목표 : 연산자, 조건문, 반복문, 함수 복습

연산자

수식 : 하나의 값으로 평가될 수 있는 표현. 수학적 관계를 나타내는 것이 아님. 연산자와  피연산자로 구성.
  • 연산자 : 어떤 연산을 나타내는 기호
  • 피연산자 : 연산의 대상이 되는 숫자나 변수를 의미
산술 연산자:
  • 거듭제곱(지수)는 높은 우선순위를 가짐
  • 거듭제곱 표현 시 왼쪽부터 계산됨..!! abc (<-방향)
  • 지수자리에는 실수도 들어올 수 있다
유형 기호
덧셈 +
뺄셈 -
곱셈 *
지수 **
나눗셈(정수) //
나눗셈(실수) /
나머지 %
비교연산자:
  • 부울BOOL형 T F의 값을 가짐
  • 붙어있는 그 자체로 하나임.
  • 참 거짓 값을 갖게 된 비교연산자 덩어리들을 변수에집어넣을수도 있음.
기호 의미
== 두 피연산자의 값이 같으면 T
!= 두 피연산자의 값이 다르면 T
> 왼피가 오피보다 크면  T
< 왼피가 오피보다 작으면 T
>= 왼피가 오피보다 크거나 같으면 T
<= 왼피가 오피보다 작거나 같으면 T
논리연산자:
  • 부울BOOL형 T F의 값을 가짐
표현 의미
A or B AB 둘 다 F여야 F
A and B AB둘 다 T여야 T
not A 개굴개굴(청개구리라는뜻.. "아니다~")
복합 할당 연산자:
  • 붙어있는 그 자체로 하나임.
  • 비트 단위연산자에도 적용 가능
A 연산자  B 예시
+= A = A + B
-+ A = A -  B
*= A = A * B
/= A = A / B
//= A = A // B
%= A = A % B
**= A = A ** B
비트 연산자:
  • 숫자를 2진수로 변환해서 비트 단위로 연산하는 연산자
연산자 의미
& AND
` OR
^ XOR
<< 왼쪽 시프트
>> 오른쪽 시프트

? 시프트 ?

  • 비트를 왼쪽 또는 오른쪽으로 이동시키는 것.
  • 왼쪽 시프트 : 비트를 왼쪽으로 밀고 오른쪽에 0을 채워넣음 (값이 두 배)
  • 오른쪽 시프트 : 비트를 오른쪽으로 밀고 왼쪽에 0을 채워넣음(값이 절반)
그 외:
  • 0제외 모든 수 : T
  • 0 : F
  • 문자 : T
  • 공백문자 "" : F
  • None : F
연산자 우선순위:
순위 연산자
1 ()
2 **
3 ~, +, - (음수, 양수)
4 *, /, %, //
5 +, - (덧셈 뺄셈)
6 AND (비트연산)
7 XOR, OR (비트연산)
8 <=, <, >, >=
9 ==, !=
10 =, %=, /=, //=, -=, +=, *=, **=
11 Is, is not
12 In, not in
13 not, or, and (논리연산)

조건문

순차구조 : 여러 명령이 순차적으로 실행되는 구조
선택구조 : 여러 개 중 하나의 명령문을 선택하여 실행하는 구조
반복구조 : 동일한 명령이 반복되면서 실행되는 구조
조건식 : 조건을 만족하는지 그렇지 않은지를 판정하는 식, 부울형으로 평가됨
코딩의 형태 특징
if  조건식 :

(실행할 내용의 식)

elif 조건식 :

(실행할 내용의 식)

else:

(실행할 내용의 식)
- If는 조건에 의한 실행 구조를 알리는 예약어,
- 조건식은 블록을 실행할 조건
- (실행할 내용의 식)은 조건에 따라 실행될 코드 블록이다

1. 조건식을 평가한 결과가 True 이면 실행할 내용이 실제로 실행됨.
2. 들여쓰기 반드시 해야함
3. 블록: 특정한 동작을 위해 코드가 모여있는 상태
4. 배타적 조건 : if -(if가 거짓이면)- elif -(if, elif가 거짓이면)- else
5. if문 안에 또 if문 넣기 가능

반복문

반복
  • 횟수 제어 반복(for문) : 반복 횟수 지정
  • 조건 제어 반복(while문) : 특정 조건 만족시 계속 반복
코딩의 형태 특징
for i in (시퀀스형의 무언가) :
(실행할 내용)
- for은 횟수에 따른 반복 구조를 알리는 예약어.
- i는 블록의 반복을 제어하는 변수. 시퀀스의 값이 차례로i에 들어가게 됨.
- 시퀀스형의 무언가 : 리스트, 문자열, range()
- 실행할내용은 반복적으로 수행될 for블록 이다.
While (조건식) :

(실행할 내용)

if 조건식:

break
- while은 조건에 따른 반복 구조를 알리는 예약어
- 조건식은 하위 블록을 실행할 조건. 조건식이 참일동안 반복된다.
- 실행할내용은 반복적으로 수행될 while블록이다.
- while문 밖에 s=0 변수를 만들어두고 누적하여 값을 더하는 방식을 사용하면, 일정한 횟수동안 반복할 수 있다.
- if 조건식을 사용해서 break를 사용해주면, 무한루프를 빠져나오게 할 수 있다.
range()함수 : 숫자 시퀀스를 생산하는 공장임.
  • range(start=0,stop,step=1) : start와step은 따로 지정하지 않으면 0과 1로 지정. 반드시 지정해야하는 값은 stop값.
break : 반복 루프를 즉시 빠져나감.
continue : 루프를 빠져나가지 않고 아래쪽 문장을 건너뛰기만 함.

함수

객체와 메소드와 함수:
  • T =turtle.Turtle() -> T라는 변수로 거북이 객체를 생성
  • T.shape("turtle") -> 거북이 객체 T에 shape()라는 명령을 내림 이 때 shape()는 메소드
  • t.forward(100) -> 거북이 객체 T에  forward()라는 명령을 내림 이 때 forward()는 메소드
  • print('helloworld')  -> 'helloworld'라는 문자열을 출력하기 위한 명령을 내리는 print()함수.
  • 함수 : 여러 개의 매개변수를 가질 수 있고, 이 매개변수를 통해 일을 함. 객체가 없더라도 일을 할 수 있고, print()처럼 단독으로 사용 가능. 함수()
  • 메소드 : 매개변수 가질 수 있음. 클래스의 일부로 메소드가 존재하며( 아마 메소드가 클래스의 일부로서 존재한다는 뜻 같음 ) 객체가 있어야 일을 할 수 있음. 객체.메소드() 느낌으로 사용해야함
함수의 장점:
  1. 코드의 재사용성 증가
  2. 가독성 향상
  3. 유지보수 용이
문자열 다루기(텍스트 처리)
  • a='abcde'=>문자열

  • 문자열 안에 있는 개별 문자들을 추출하는 작업이 기본적. (문자열을 문자로 분해)

  • 문자열은 인덱스로 접근 가능

  • 인덱스(0~)/음수인덱스(-1~)

  • 슬라이싱 : [이상:미만]

  • 문자열 리스트 변환 : list('a')

  • 문자열을 단어로 나누는 작업

    • a.split() -> 띄어쓰기를 기준으로 구분
    • a.split('.') ->  '.' 을 기준으로 구분
    • => 즉, split()의 괄호 안에는 기준이 들어가는 거임.
  • 단어들을 다시 붙이는 작업

    • ''.join(문자들) -> 문자들이 붙음
    • '-'.join(문자들) -> 문자들이 -을 사용하여 붙여짐.
  • 문자열의 출현 횟수 계산

    • a.count('찾고싶은녀석')
  • 문자열이 무엇으로 시작/끝 이 나는지 확인

    • a.startswith() => 시작 . 부울형으로 결과가 나옴
    • a.endswith() => 끝 . 부울형 결과 나옴