본문 바로가기
Study/CODE 3기 [Jump to python]

[2조:ACE] Python 스터디 #2

by 24 최혜윤 2024. 3. 17.

2조 - 강수환 고정윤 문하진 박무준 최정우 최혜윤


 
파이썬 스터디 2주차
진도: 02-6 집합 자료형 ~ 03-3 for문


I. 02-6 집합 자료형 

작성자 최혜윤 

집합(set)은 집합에 관련된 것을 쉽게 처리하기 위해 만든 자료형. set 키워드를 사용
set()의 괄호 안에 리스트를 입력 or 문자열 입력

>>> s1 = set([1, 2, 3])
>>> s1
{1, 2, 3}
>>> s2 = set("Hello")
>>> s2
{'e', 'H', 'l', 'o'}
set 특징 
1. 중복을 허용하지 않는다. ( Hello에서 l이 한 번 나온 이유)
2. 순서가 없다. (Hello에서 e, H, l, o 순으로 나온 이유)

 

교집합, 합집합, 차집합 구하기

>>> s1 = set([1, 2, 3, 4, 5, 6])
>>> s2 = set([4, 5, 6, 7, 8, 9])

(1) 교집합 구하기 (& or intersection 함수 사용)

>>> s1 & s2
{4, 5, 6}

(2) 합집합 구하기 (ㅣor union 함수 사용)

>>> s1 ㅣ s2
{1, 2, 3, 4, 5, 6, 7, 8, 9}

(3) 차집합 구하기 ( - or difference 함수 사용)

>>> s1 - s2
{1, 2, 3}
>>> s2 - s1
{7, 8, 9}

집합 자료형 관련 함수

(1) 값 1개 추가하기 - add 

>>> s1 = set([1, 2, 3])
>>> s1.add(4)
>>> s1
{1, 2, 3, 4}

(2) 값 여러 개 추가하기 - update

>>> s1 = set([1, 2, 3])
>>> s1.update([4, 5, 6])
>>> s1
{1, 2, 3, 4, 5, 6}

(3)  특정 값 제거하기 - remove

>>> s1 = set([1, 2, 3])
>>> s1.remove(2)
>>> s1
{1, 3}

02-7 불 자료형

작성자_문하진

   1. 불 자료형이란?

참(True)과 거짓(False)을 나타내는 자료형, True와 False의 값만을 가질 수 있다.

   2. 불 자료형은 어떻게 사용할까?

-자료형의 지정

a = true
print(type(a))
<class 'bool'>

-조건문

print(1 == 1)
True

   3. 자료형의 참과 거짓

-참일 때

문자열, 리스트, 튜플, 딕셔너리 등의 값이 비어있지 않을 때

숫자가 0이 아닐 때

-거짓일 때

문자열, 리스트, 튜플, 딕셔너리 등의 값이 비어있을 때

숫자가 0일 때

None

-ex) a가 참일 경우  a.pop()을 계속 실행하라는 의미

a = [1, 2, 3, 4]
while a:
     print(a.pop())
4
3
2
1

-ex)[1, 2, 3]이 참이면 "참"을 출력하고 거짓이면 "거짓"을 출력하라는 의미

if [1, 2, 3]:
    print("참")
    else:
        print("거짓")
참

    4. 불 연산

bool 함수를 통해서 자료형의 참/거짓을 판별할 수 있다. 

print(bool([1, 2, 3]))
True
print(bool([]))
False

 

02-8 자료형의 값을 저장하는 공간, 변수

-a, b, c '변수'
-변수를 만들 때 =(assignment) 기호 사용
-변수_이름=변수에_저장할_값
-파이썬은 변수에 저장된 값 스스로 판단하여 자료형 타입 지정
                                                                                                             ->더 편리
변수란?
파이썬에서 사용하는 변수는 객체를 가리키는 것
(객체란 자료형의 데이터와 같은 것 의미)
a=[1, 2, 3]이라 하면 [1, 2, 3]값을 가지는 리스트 데이터(객체) 자동으로 메모리에 생성
->변수 a는 [1, 2, 3]리스트가 저장된 메모리의 주소를 가리키게 됨.
(메모리란 컴퓨터가 프로그램에서 사용하는 데이터를 기억하는 공간)
 
메모리 주소 확인법

id는 변수가 가리키고 있는 객체 주소 값 리턴하는 파이썬 내장함수

 
 

리스트 복사

-b는 a와 완전히 동일
-[1, 2, 3]이라는 리스트 객체를 참조하는
변수가 a변수 1개에서 b변수 추가되어
두 개로 늘어났다는 차이
 
 
 

is는 동일한 객체를 가리키고 있는지 판단하는 파이썬 명령어

 
 
b변수를 생성할 때 a변수 값을 가져오면서 a와는 다른 주소를 가리키는 방법
1. [:]이용

[:] 리스트 전체를 가리킴

a리스트 값 바꾸더리도 b리스트에 영향 없음

 

2. copy 모듈 이용

 from copy import copy

b=copy(a)&amp;nbsp; b=a[:]

 

is 에서 false를 리턴

두 변수의 값은 같지만, 서로 다른 객체를 가리키고 있다
 
변수 만드는 여러 방법
1. 튜플로 a, b에 값 대입

 
2. 리스트로 변수
3. 여러 개의 변수에 같은 값 대입

 

처음에 a에 값 3, b에 값 5가 대입되어 있었지만
a, b=b, a 문자을 수행한 후에는 그 값이 서로 바뀌었다는 것을 확인 가능

03-1 if문

작성자 최정우
파이썬에서의 'if'문은 프로그래밍에서 결정을 내리는 핵심적인 도구입니다. 
조건을 평가하여 참이면(TRUE) 특정 코드를 실행하고, 거짓이면(FALSE)이면 다른 코드를 실행하거나 실행하지 않습니다. 

기본구조
if문의 기본 구조는 다음과 같습니다.

if 조건:

예제 

x = 10
if x > 5:
    print("x는 5보다 큽니다")

이 코드는 x가 5보다 큰 경우에만 메세지를 출력할 수 있게 만들었습니다. 
x의 값이 5 이하면 아무것도 출력되지 않습니다.

'else' 사용해보기

if문 내에서 다른 if문을 중첩하여 사용할 수도 있습니다. 이것을 중첩 if문 이라고 합니다.

x = 10
if x > 5:
    if x < 20:
        print("x는 5보다 크고 20보다 작습니다")

이 코드는 x가 5보다 크고 동시에 20보다 작을 때만 메세지를 출력합니다.

'else' 사용해보기

if문 다음에 else를 사용하여 조건이 거짓인 경우에 실행될 코드를 지정할 수도 있습니다.

예제 

x = 2
if x > 5:
    print("x는 5보다 큽니다")
else:
    print("x는 5보다 크지 않습니다")

이 코드는 x가 5보다 크면 "x는 5보다 큽니다."를, 그렇지 않으면 "x는 5보다 크지 않습니다."를 출력합니다.

'elif' 로 여러 조건 다루기

여러 조건을 체크하고 싶을 때는 'elif'(else if의 줄인말)를 사용합니다.

예제 

x = 10
if x > 15:
    print("x는 15보다 큽니다")
elif x > 10:
    print("x는 10보다 크지만, 15보다는 작거나 같습니다")
else:
    print("x는 10보다 크지 않습니다")

이 예제는 x가 15보다 큰 경우, 10보다 크지만 15보다 작거나 같은 경우, 그리고 10보다 크지 않는 경우를 다루는 코드입니다.

논리 연산자 'and', 'or', 'not'

파이썬에서 'and', 'or', 'not'은 논리 연산자입니다.
논리 연산자: 프로그래밍에서 하나 이상의 조건을 결합하거나 반전시키는 데 사용되는 연산자

'and' 연산자

  • 정의: 두 조건이 모두 참일 때만 참을 반환합니다.
  • 예시: if 조건1 and 조건2:는 조건1과 조건2가 모두 참일 때 실행될 코드 블록을 지정합니다.
age = 25
driving_license = True

if age >= 18 and driving_license:
    print("운전 가능")
else:
    print("운전 불가능")

이 코드는 사용자의 나이가 18세 이상이고 운전 면허증이 있을 경우에만 "운전 가능"을 출력합니다. and 연산자를 사용했기에 두 조건(18세 이상&면허증 보유) 모두 만족해야 합니다.

'or' 연산자

  • 정의: 두 조건 중 하나라도 참이면 참을 반환합니다.
  • 예시: if 조건1 or 조건2:는 조건1 또는 조건2 중 하나라도 참일 때 실행될 코드 블록을 지정합니다.
rain = False
snow = True

if rain or snow:
    print("우산을 챙기세요")
else:
    print("우산이 필요 없습니다")

이 코드는 비가 오거나 눈이 올 때 "우산을 챙기세요"를 출력합니다. 두 조건 중 하나라도 만족하면 출력됩니다.

'not' 연산자

  • 정의: 단일 조건의 참거 값을 반전시킵니다. 즉, 참이면 거짓을, 거짓이면 참을 반환합니다.
  • 예시: if not 조건:는 주어진 조건이 거짓일 때 참을 반환하므로, 조건이 거짓일 때 실행될 코드 블록을 지정합니다.

weekend = False

if not weekend:
    print("평일입니다")
else:
    print("주말입니다")

이 코드는 'weekend'라는 변수가 false(거짓)일 때, 즉 주말이 아닐 때 "평일입니다"를 출력합니다. 

03-2 while문

작성자 박무준
while은 for과 함께 대표적인 반복문 중 하나이다.
(1) while 반복문을 보여주는 대표적인 예) 나무찍기

>>> treeHit = 0
>>> while treeHit < 10:
>>> 	treeHit = treeHit +1
>>> 	print("나 무 를 %d번 찍 었 습 니 다." % treeHit)
>>> 	if treeHit == 10:
>>> 	print("나 무 넘 어 갑 니 다.")

나 무 를 1번 찍 었 습 니 다.
나 무 를 2번 찍 었 습 니 다.
나 무 를 3번 찍 었 습 니 다.
나 무 를 4번 찍 었 습 니 다.
나 무 를 5번 찍 었 습 니 다.
나 무 를 6번 찍 었 습 니 다.
나 무 를 7번 찍 었 습 니 다.
나 무 를 8번 찍 었 습 니 다.
나 무 를 9번 찍 었 습 니 다.
나 무 를 10번 찍 었 습 니 다.
나 무 넘 어 갑 니 다.

이런 코드를 사용하면 print를 여러번 쓰지 않고도 원하는 코드를 만들 수 있다.
특히 if 조건문과 합용하게 되었을 때 활용도가 크다. 
if조건문에서 참이면 while함수 속에서 반복을 하게 되고 거짓이 되어 while문을 빠져나가게 된다.
(2) 그 외에도 break 문을 쓰게 된다면 강제로 while문을 빠져나갈 수 있다.
(3) break문과 반대되는 개념이라고도 볼 수 있는 continue문은 while문을 빠져나가지 않고 다시 while문의 처음으로 돌아가고 싶을 때 사용할 수 있다.

>>> a = 0
>>> while a < 10:
... 	a = a + 1
... 	if a % 2 == 0: continue
...		print(a)
...
1
3
5
7
9

if조건문을 while문 안에 많이 사용하게 된다면 break문과 continue문이 빛을 볼 것이라고 생각한다.
마지막으로 while문을 사용하다면 무한 루프에 빠질 수 있다. 이런 경우에는 [Ctrl+C]를 사용하여 빠져나가면 된다.
 

03-3 for문


for문을 이해하기위해 기본 구조부터 알아보도록 할게요.
for 문의 기본 구조는 다음과 같습니다.

for 변 수 in 리 스 트 (또 는 튜 플 , 문 자 열):
수 행 할_문 장1
수 행 할_문 장2

리스트나 튜플, 문자열의 첫 번째 요소부터 마지막 요소까지 차례로 변수에 대입되어 ‘수행할 _ 문장 1’,
‘수행할 _ 문장 2’ 등이 수행됩니다.

저는 프로그래밍에서 중요한 것이 어떤 도구를 사용할지를 떠올리는 능력이라고 생각합니다. (문법을 모르는 것은 검색을 하거나 시간을 쏟으면 해결된다고 생각하거든요 :) )
그래서 for 제어문을 어떤 상황에서 떠올릴지를 알아볼게요!
어떤 문제를 해결할 때 급수 혹은 반복을 이용할 수 있다고 생각된다면 for문의 사용을 고려하는 것이 좋겠습니다.
for문은 대입값을 변화시킬 수 있다는 점에서 활용성이 아주 좋아서 for문의 사용이 익숙해진다면 다양한 문제해결에 적극적으로 활용할 수 있겠습니다.

다음은 continue에 대해 알아볼게요.

marks = [90, 25, 67, 45, 80] 
number = 0 
for mark in marks: 
    number = number +1 
    if mark < 60: 
        continue 
    print("%d번 학 생 축 하 합 니 다. 합 격 입 니 다. " % number)

이렇듯 continue의 경우 조건에 부합한다면 for문의 처음으로 돌아가는 기능을 가지는데 이것은 리스트 혹은 튜블에 있는 요소들을 걸러내는데 사용된다고 할 수 있어요.
리스트나 튜플 안에 내가 버리고 싶은 요소가 있어도 번거롭게 변수를 변화시키지 않고 for문을 사용할 수 있다는 의미가 있어요.
*위에서 보듯이 continue는 if에 들여쓰기 해야해요! print는 if를 통과한 요소들만 실행하는 것이기 때문에 if와 같은 들여쓰기(?)에 있어야해요 if와 print 모두 for에 들여쓰기 돼있어야 한다는 것이죠.

다음은 range에 대해 알아볼게요.

>>> a = range(10) 
>>> a 
range(0, 10)

range가 for에만 사용된다고 생각하는 분들도 있던데 range는 그냥 숫자의 집합일 뿐이랍니다. 이렇게 혼자서도 쓰일 수 있어요.

다음은 for의 다중이용이에요

>> for i in range(2,10): # 1번 for문 
... for j in range(1, 10): # 2번 for문 
... print(i*j, end=" ") 
... print('')

이걸 보면 for 안에 for이 들여쓰여있는 걸 볼 수 있어요.  그래서 i에 2를 대입하고 j에 1~9까지 9번 대입한 후 i에 3을 대입하고 j에 1~9까지 9번 대입하고 이런 식으로 총 72번의 대입이 일어납니다.(8*9) 들여쓰기에 신경쓰면서 코드를 이해해줬으면 좋겠어요.


2주차 QUIZ

작성자 박무준
(3) 합

n=int(input())
sum=0
i=1
while i<=n:
  sum=sum+i
  i=i+1
print(sum)

sum=0으로 처음에 제시해주고 while 함수를 쓴다면 헷갈리지 않게 완성할 수 있다.
(5) 문자열

T = int(input())
for _ in range(T):
    A = input()
    print(A[0] + A[-1])

for i in range 대신 for _ in range를 쓴다면 i라는 변수를 쓰지 않고도 for 반복문을 쓸 수 있기에 편리하다. by 최정우의 idea
(6) 사칙연산

A, B = map(int, input().split())
print(A + B)
print(A - B)
print(A * B)
print(A // B)
print(A % B)

input값을 원활히 할 수 없어서 map함수를 추가적으로 학습한 후 완성하였다.
교훈. 2주차에서 크게 배운 것은 while과 for문이다. while이 이해하기는 쉬웠지만, for를 쓰게 된다면 비교적 코드를 예쁘고 보기좋게 짤 수 있었기에 for문에 대한 이해도를 높여야겠다는 생각이 들었다.

Python_Study_2주차.ipynb
0.01MB