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]리스트가 저장된 메모리의 주소를 가리키게 됨.
(메모리란 컴퓨터가 프로그램에서 사용하는 데이터를 기억하는 공간)
메모리 주소 확인법
리스트 복사
-b는 a와 완전히 동일
-[1, 2, 3]이라는 리스트 객체를 참조하는
변수가 a변수 1개에서 b변수 추가되어
두 개로 늘어났다는 차이
b변수를 생성할 때 a변수 값을 가져오면서 a와는 다른 주소를 가리키는 방법
1. [:]이용
[:] 리스트 전체를 가리킴
2. copy 모듈 이용
from copy import copy
두 변수의 값은 같지만, 서로 다른 객체를 가리키고 있다
변수 만드는 여러 방법
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문에 대한 이해도를 높여야겠다는 생각이 들었다.
'Study > CODE 3기 [Jump to python]' 카테고리의 다른 글
[ 비비빅 ] Python 스터디 # 2주차 (1) | 2024.03.18 |
---|---|
[5조 C5DE] Python Study #2 (1) | 2024.03.18 |
[김이김이나] python 스터디 2주차 (0) | 2024.03.14 |
[ 비비빅 ] Python 스터디 # 1주차 (0) | 2024.03.11 |
[5조 C5DE] Python Study (0) | 2024.03.11 |