파이썬 스터디4
seonae's wiki
2019 파이썬 스터디 | |
---|---|
일정 | 2019/2/7 4-6시 |
장소 | 강의동 110호 |
참여인원 | 광우,선애,승진,나라,에릭,인혁 |
내용 | 파이썬기초 : 자료형(집합), 내장리스트, 제어문 |
목차
자료형:집합
- 집합(set) : 순서없이, 중복없이, 여러값을 모아놓은 자료형.
>>> a = set() #빈 집합객체 생성. 공집합 >>> b = {1,2,3} #집합 >>> set([1,2,3]) #리스트 변환 >>> set("Hello") #문자열 변환 >>> set((1,2,3)) #튜플 변환 >>> set((1,2,3,1,2,3,1,2,3)) >>> l1 = list(s1) #리스트로 변환 >>> t1 = tuple(s1) #튜플로 변환
집합의 연산:교집합, 합집합, 차집합
#2개의 집합 >>> s1 = set([1, 2, 3, 4, 5, 6]) >>> s2 = set([4, 5, 6, 7, 8, 9]) #교집합(intersection) >>> s1 & s2 >>> s1.intersection(s2) #합집합(union) >>> s1 | s2 >>> s1.union(s2) #차집합(difference) >>> s1 - s2 >>> s2 - s1 >>> s1.difference(s2) >>> s2.difference(s1) #그외 >>> A={1,2,3,4,5} >>> B={1,2,3} >>> 2 in A #2∈A >>> 2 not A #2∉A >>> A.issuperset(B) #A⊃B >>> B.issubset(A) #B⊂A >>> A.isdisjoint(B) #교집합이 공집합인가?
집합 관련 메소드
>>> a = {1,2,3} >>> len(a) #값 추가하기 >>> s1 = set([1, 2, 3]) >>> s1.add(4) #1개만 추가 >>> s1 >>> s1.update([5, 6, 7]) #여러개추가 >>> s1 #제거하기 >>> a = {1,2,3,4,5,6,7,8,9} >>> a.clear() #전체 원소를 제거 >>> a = {1,2,3,4,5,6,7,8,9} >>> a.discard(4) >>> a.discard(4) #원소가 없으면 pass >>> a.remove(5) >>> a.remove(5) #원소가 없으면 error >>> a.pop()
연습문제
- set을 이용하여 중복제거해보기
>>> a = [1, 1, 1, 2, 2, 3, 3, 3, 4, 4, 5]
- 집합연산하기
>>> U = {1,2,3,4,5,6,7,8,9,10} #전체집합 >>> A = {1,3,5,7,9} #부분집합1 >>> B = {1,2,3,4,5} #부분집합2
- 문제 1 : A∩BC
- 문제 2 : (A∪B)C
자료형의 참과 거짓
참(True) | "python", [1, 2, 3], 1 |
거짓(False) | ", [], (), {}, 0 |
None |
제어문
if문
- 기본구조
if 조건문: 수행할 문장1 수행할 문장2 ... else: 수행할 문장A 수행할 문장B ...
- 조건문이란 무엇인가?(What is conditional statement?)
- 참과 거짓을 판단하는 문장(The sentence to judge True or False)
- 비교연산자(>,<. <=, >=, !=, ==), 논리연산자(and, or, not), x in s/x not in s
- 상황 1 : "돈이 있으면 택시를 타고, 돈이 없으면 걸어 간다."
>>> money = True >>> if money: print("택시를 타고 가라") else: print("걸어 가라")
- 상황 2 : "돈이 3000원 이상 있거나 카드가 있다면 택시를 타고 그렇지 않으면 걸어 가라"
>>> money = 2000 >>> if money >= 3000: ... print("택시를 타고 가라") ... else: ... print("걸어가라")
- 상황 3 : "주머니에 돈이 있으면 택시를 타고, 주머니에 돈은 없지만 카드가 있으면 택시를 타고, 돈도 없고 카드도 없으면 걸어 가라"
>>> pocket = ['paper', 'cellphone'] >>> card = True >>> if 'money' in pocket: ... print("택시를 타고가라") ... elif card: ... print("택시를 타고가라") ... else: ... print("걸어가라")
>>>if score >= 60: message = "success" else: message = "failure" >>> message = "success" if score >= 60 else "failure"
연습문제
- 아래코드의 결과값은?
>>> a = "Life is too short, you need python" >>> if 'wife' in a: ... print('wife') ... elif 'python' in a and 'you' not in a: ... print('python') ... elif 'shirt' not in a: ... print('shirt') ... elif 'need' in a: ... print('need') ... else: ... print('none')
while문
- 기본구조
while <조건문>: <수행할 문장1> <수행할 문장2> <수행할 문장3> ...
>>> treeHit = 0 >>> while treeHit < 10: ... treeHit = treeHit +1 ... print("나무를 %d번 찍었습니다." % treeHit) ... if treeHit == 10: ... print("나무 넘어갑니다.")
- break
>>> coffee = 10 >>> money = 300 >>> while money: ... print("돈을 받았으니 커피를 줍니다.") ... coffee = coffee -1 ... print("남은 커피의 양은 %d개입니다." % coffee) ... if coffee == 0: ... print("커피가 다 떨어졌습니다. 판매를 중지합니다.") ... break
- continue
>>> a = 0 >>> while a < 10: ... a = a + 1 ... if a % 2 == 0: continue ... print(a)
- 무한루프
>>> while True: ... print("Ctrl+C를 눌러야 while문을 빠져나갈 수 있습니다.")
연습문제
- 1부터 1000까지의 자연수 중 3의 배수의 합을 구하시오.
- 다음은 A학급 학생의 점수를 나타내는 리스트이다. 다음 리스트에서 50점 이상의 점수들의 총합을 구하시오. : A = [20, 55, 67, 82, 45, 33, 90, 87, 100, 25]
- while문을 이용하여 아래와 같이 별(*)을 표시하는 프로그램을 작성해 보자.
* ** *** ****
for문
- 기본구조
for 변수 in 리스트(또는 튜플, 문자열): 수행할 문장1 수행할 문장2 ...
- 가장 기본적인 for문
>>> test_list = ['one', 'two', 'three'] >>> for i in test_list: ... print(i)
- 응용 1
marks = [90, 25, 67, 45, 80] number = 0 for mark in marks: number = number +1 if mark >= 60: print("%d번 학생은 합격입니다." % number) else: print("%d번 학생은 불합격입니다." % number)
- 응용 2 : continue
marks = [90, 25, 67, 45, 80] number = 0 for mark in marks: number = number +1 if mark < 60: continue print("%d번 학생 축하합니다. 합격입니다. " % number)
- range() 함수
>>> a = range(10) >>> a = range(1, 11) >>> sum = 0 >>> for i in range(1, 11): ... sum = sum + i ... >>> print(sum)
- 응용 3 : range()함수
marks = [90, 25, 67, 45, 80] for number in range(len(marks)): if marks[number] < 60: continue print("%d번 학생 축하합니다. 합격입니다." % (number+1))
- for문 중첩
>>> for i in range(2,10): # ①번 for문 ... for j in range(1, 10): # ②번 for문 ... print(i*j, end=" ") ... print('')
- 리스트 내장/내포(List comprehension) : [표현식 for 항목 in 반복가능객체 if 조건문]
>>> a = [1,2,3,4] >>> result = [] >>> for num in a: ... result.append(num*3) ... >>> print(result) >>> a = [1,2,3,4] >>> result = [num * 3 for num in a] >>> print(result) >>> result = [x*y for x in range(2,10) ... for y in range(1,10)] >>> print(result)
연습문제
- 1부터 100까지의 숫자를 for문을 이용하여 출력하시오.
- for문을 이용하여 A 학급의 평균 점수를 구해 보자. : A = [70, 60, 55, 75, 95, 90, 80, 80, 85, 100]
- 리스트 중에서 홀수에만 2를 곱하여 저장하는 다음과 같은 코드가 있다. 리스트 내장으로 표현하시오.
numbers = [1, 2, 3, 4, 5] result = [] for n in numbers: if n % 2 == 1: result.append(n*2)