"파이썬 스터디4"의 두 판 사이의 차이

seonae's wiki
이동: 둘러보기, 검색
(자료형의 참과 거짓)
 
4번째 줄: 4번째 줄:
 
|일정 = 2019/2/7 4-6시
 
|일정 = 2019/2/7 4-6시
 
|장소 = 강의동 110호
 
|장소 = 강의동 110호
|참여인원 = 광우,선애,승진,나라,에릭,인혁
+
|참여인원 = 광우,선애,승진,나라,인혁
 
|내용 = 파이썬기초 : 자료형(집합), 내장리스트, 제어문
 
|내용 = 파이썬기초 : 자료형(집합), 내장리스트, 제어문
 
}}
 
}}

2019년 2월 8일 (금) 12:46 기준 최신판

스터디 홈


자료형:집합

  • 집합(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. 문제 1 : A∩BC
  2. 문제 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"
연습문제
  1. 아래코드의 결과값은?
>>> 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. 1부터 1000까지의 자연수 중 3의 배수의 합을 구하시오.
  2. 다음은 A학급 학생의 점수를 나타내는 리스트이다. 다음 리스트에서 50점 이상의 점수들의 총합을 구하시오. : A = [20, 55, 67, 82, 45, 33, 90, 87, 100, 25]
  3. 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. 1부터 100까지의 숫자를 for문을 이용하여 출력하시오.
  2. for문을 이용하여 A 학급의 평균 점수를 구해 보자. : A = [70, 60, 55, 75, 95, 90, 80, 80, 85, 100]
  3. 리스트 중에서 홀수에만 2를 곱하여 저장하는 다음과 같은 코드가 있다. 리스트 내장으로 표현하시오.
numbers = [1, 2, 3, 4, 5]

result = []
for n in numbers:
    if n % 2 == 1:
        result.append(n*2)