220902 Day9

유예지·2022년 9월 2일

* input()

#입력 받은 것의 2배 출력
>>> a = int(input())
    print(a*2)
    
#'space bar'로 여러개를 한번에 입력받기
>>> words = input().split()
    words

#'comma(,)'로 분리해서 여러개를 한번에 입력받기
>>> words = input().split(",")
    words

* formatting 포맷팅 : .format()

>>> print("I ate three apples. So I have sicked for 3 days.")

>>> number = "three"
    day = 3
    print("I ate number apples. So I have sicked for day days.")
#print에 들어있는 그대로 출력된다

#.format() : {}로 변수 자리를 표시
>>> number = "three"
    day = 3
    print("I ate {} apples. So I have sicked for {} days.".format(number, day))
    print("I ate {0} apples. So I have sicked for {1} days.".format(number, day))
    print("I ate {1} apples. So I have sicked for {0} days.".format(number, day))
    print("I ate {0} apples. So I have sicked for {0} days.".format(number, day))

* f-string : 보다 더 간단하게 나타낸다

>>> number = "three"
    day = 2
    print(f"I ate {number} apples. So I have sicked for {day} days.")
    
#이름(name)과 나이(age)를 입력받아서 "나의 이름은 000이고, 나이는 00세 입니다." 출력
>>> name = input("이름: ")
    age = int(input("나이: "))
    print(f"나의 이름은 {name}이고, 나이는 {age}세 입니다.")

2. 파이썬의 자료형 : list, tuple, dictionary, set

(1) list 리스트

-만들기 -> 접근하기 -> 수정하기
-리스트의 역할 : 여러개의 데이터를 하나로 묶어준다

① 만들기 : [ , , ]

>>> a = [1,2,3,4]
    a
    type(a)

>>> a = 1, 2
    a
    type(a)

>>> a = [1,2,3,4,"Hello","Good morning"]
    a   #숫자와 문자도 같이 묶을 수 있다
    type(a)
    
>>> a = [1,2,3,4,"Hello","Good morning",[5,6,7,8]]
    a   #list 안에 list를 넣을 수도 있다 -> 중첩리스트(nested list)

② 접근하기 : 변수[ ]

  • indexing : [ ]안의 숫자는 index; index로 접근한다
>>> a = [1,2,3,4,"Hello","Good morning",[5,6,7,8]]
    a
    a[0]
    a[4]
    a[4][0]
    
#'Good morning'에서의 m을 출력
>>> a[5][5]

#7을 출력
>>> a[6][2]

#index를 뒤에서부터 셀 때는 '-'를 사용한다
>>> a[-1]   #뒤에서 첫번째
    a[-2][-1]
    a[-0]   #-0은 0으로 취급된다
    
>>> a[0]+a[1]+a[2]+a[3]
    a[4]+a[5]
  • silcing : 변수[start : stop]
    -stop자리에 들어가는 "인덱스의 앞" 까지 출력된다
>>> a = [1,2,3,4,"Hello","Good morning",[5,6,7,8]]
    a[0:4]
    a[4:6]
    a[4: ]
    a[ :4]
    a[ : ]
    a[-3: ]
    
#'Hello'에서 'll'만 출력
>>> a[4][2:4]

#'Good morning'에서 'morning'만 출력
>>> a[-2][5: ]    

③ 수정하기 : (수정 전의 값) = (수정 후의 값)

>>> a = [1,2,3,4,"Hello","Good morning",[5,6,7,8]]

#2를 22로 수정
>>> a[1] = 22
    a
  • 추가 : .append()
    -for문에서 많이 쓰인다
>>> a.append(9)
    a   #리스트의 맨 끝에 추가된다
    
>>> a.append("문자")
    a   #문자도 추가 가능하다
    
>>> a.insert(2, 33)   #위치를 지정해서 추가 : (인덱스 번호, 추가할 값)
    a
  • 삭제 : .remove()
    -list 내의 원소 삭제
>>> a.remove(33)
    a
    
>>> a.pop(3)   #괄호 안에 인덱스 번호가 들어간다
    a
  • 정렬 : sorted() 또는 .sort()
    -sorted() : 파이썬 내장함수
    -.sort() : 메소드
>>> a = [1,3,4,2]
    sort([1,3,4,2])
    sorted([1,3,4,2])
    
>>> a = [5,8,7,6]
    a.sorted()
    a.sort()
    a
    
>>> a.reverse()
    a   #정렬된 순서를 반대로 뒤집는다

(2) tuple 튜플 : ( )

-리스트와 거의(99%) 같다
-수정이 불가능하여 자주 사용하지는 않는다

>>> a = (1,2,3,4)
    a
    type(a)
    
>>> a = 5,6,7,8
    a   #()가 자동으로 만들어져 출력된다
    
>>> num = (10, 12)
    num
    
>>> a, b = num  #묶여있는 두개의 변수를 한꺼번에 받게 할 수 있다
    (a, b) = (10, 20)
    print(a)
    print(b)

(3) dictionary 딕셔너리 : { }

① 만들기 : { key : value }

>>> a = {"apple" : "사과"}
    a
    type(a)
        
>>> a = {"apple" : "사과", "banana" : "바나나", "cherry" : "체리"}

#key 하나에 value가 여러개일 수 있다 : 여러개 -> 묶어라 -> [ ] 사용
>>> a = {"apple" : ["사과","능금","백설공주"], "banana" : "바나나", "cherry" : "체리"}
    a

② 접근, 검색

>>> a["apple"]
    a["사과"]   #value로는 접근이 되지 않는다
    
>>> a.keys()
dict_keys(['apple', 'banana', 'cherry'])

>>> a.values()
dict_values(['사과', '바나나', '체리'])

>>> a.items()
dict_items([('apple', '사과'), ('banana', '바나나'), ('cherry', '체리')])
#전체는 []로 묶고, 각각의 key와 value를 (), 즉 tuple로 묶고 있다
>>> for i in a.items() :
        print(i)
('apple', '사과')
('banana', '바나나')
('cherry', '체리')

>>> for i, j in a.items() :
        print(i, j)
apple 사과
banana 바나나
cherry 체리

③ 수정

>>> a['banana'] = "빠나나"
    a
{'apple': ['사과', '능금', '백설공주'], 'banana': '빠나나', 'cherry': '체리'}

#추가 : 수정과 방법이 비슷하다
>>> a['durian'] = "두리안"
    a
{'apple': ['사과', '능금', '백설공주'], 'banana': '빠나나', 'cherry': '체리', 'durian': '두리안'}

>>> 명단 = {"철수" : "합격", "영희" : "합격"}
    name = input("이름을 입력하세요: ")
    print(명단[name])
    print(f"{명단[name]} 입니다")

3. 변수 (variables) : 자료형의 값을 저장하는 공간

* 복사를 하는 방법

>>> a = [1,2,3]
    b = a
    c = a[:]
    d = a.copy()

    import copy
    e = copy.copy(a)

    from copy import copy
    f = copy(a)
>>> a = [1,2,3]
    a
>>> id(a)  #id() : 변수가 가리키고 있는 객체의 주소 값을 돌려주는 파이썬 내장 함수

>>> b = a
    b
>>> c = a.copy()
    c
#b와 c 모두 a의 값을 복사한 것 같지만, 결과는 다르다

>>> c[2] = 30
    c
[1,2,30]
>>> a
[1,2,3]

>>> b[2] = 300
    b
[1,2,300]
>>> a
[1,2,300]

>>> print(id(a))
    print(id(b))
    print(id(c))    
#a와 b의 id값이 같다
#등호(=)를 사용하는 것은 복사하는 것이 아니다, 대입의 개념
>>> a, b = ("python","life")
    (a, b) = "python","life"
    a, b
('python', 'life')

>>> a = b = 'python'
    print(a)
    print(b)
python
python

* 이스케이프 문자 (escape; 탈출)

  • 줄바꿈 :
\n, \t
>>> print("Life is short. \nWe need Python.")
Life is short.
We need Python.
  • 따옴표를 그대로 표현할 때 :
\', \"
>>> print("그가 나에게 \"사랑해요\"라고 말했다.")
그가 나에게 "사랑해요"라고 말했다.

4. 제어문

(1) 조건문 if

* 구조

if 조건 :
    참일 때 실행될 문장
elif:
    참일 때 실행될 문장
elif:
    참일 때 실행될 문장
else:
    나머지 모두에서 실행될 문장
>>> if 1 > 2 :
       print("yes")

>>> if 1 > 2 :
       print("yes")
    else :
       print("no")
       
#온도(temp)가 25도 보다 크면 "여름", 15도 보다 크면 "가을", 5도 보다 크면 "봄", 나머지는 "겨울"
>>> temp = int(input("온도: "))
    if temp > 25:
       print("여름")
    elif temp > 15:
       print("가을")
    elif temp > 5:
       print("봄")
    else:
       print("겨울")
       
#입력받은 숫자가 홀수인지 짝수인지 판단
>>> number = int(input("숫자 입력: "))
    if number % 2 == 0:
       print("짝수입니다")
    else :
       print("홀수입니다")

* A in B

>>> pocket = ["coins", "bill", "card"]
    if "bill" in pocket:
       print("택시를 타자")
    else:
       print("걸어가자")
       
>>> names = ["류준열", "김우빈", "김태리", "최동훈"]
    name = input("이름: ")
    if name in names:
       print("외계인")
    else:
       print("인간")

(2) 반복문 for

* 구조

for i in [....]:
    반복할 문장
>>> for i in [1,2,3]:
        print(i)
        print("hello")
        print()   #한줄띄기
        
>>> for i in [1,2,3]:
        print()
        print("hello")
        print()   #꼭 i를 print해야하는 것은 아니다
        
>>> for _ in [1,2,3]:
        print()
        print("hello")
        print()   #i를 꼭 입력하지 않아도 실행된다

* range()

>>> for i in [0,1,2,3,4,5,6,7,8,9]:
        print(i)
        
>>> for i in range(10):
        print(i)    #'0'부터 '9'까지 출력된다
        
>>> for i in range(1, 11):
        print(i)    #'1'부터 '10'까지 출력된다
        
>>> for i in range(1, 11, 3):
        print(i)    #'1'부터 '10'까지 '3'간격으로 출력된다
        
>>> for i in range(10):
        print(i, end = ", ")    #'0'부터 '9'까지의 숫자가 끝에 ", "가 붙어서 출력된다 
#2부터 10까지 짝수만 출력
>>> for i in range(2, 11, 2):
        print(i)
        
>>> for i in range(1, 11):
        if i % 2 == 0:
           print(i)
           
>>> for i in range(4):
        print(names[i])

* 반복문으로 총합 구하기

for i in range(10):
 
1 = 0 + 1
3 = 1 + 2
6 = 3 + 3
10 = 6 + 4
...
    
sum = sum + i

#234부터 567까지의 숫자의 총합
>>> sum = 0
    for i in range(234, 568):
        sum += i    #sum = sum + i 을 간략하게 표기
    print(sum)

#숫자 2개를 입력받아서
>>> a = int(input("첫번째: "))
    b = int(input("두번째: "))
    sum = 0
    for i in range(1, b+1):
        sum += i
    print(sum)
    
#20까지의 수 중에서 홀수만 모으기
>>> a = []
    for i in range(20):
        if i % 2 != 0:
           a.append(i)
    print(a)

* 중첩 for문; 구구단 만들기

#2단
>>> for i in range(1, 10):
        print(f"2 X {i} = {2*i}")
        
#2단 ~ 9단
>>> for i in range(2, 10):
        print(f"{i}단")
        for j in range(1, 10):
            print(f"{i} X {j} = {i*j}")
        print()

* List comprehension 리스트 내포

#3의 배수
>>> a = [1,2,3,4]
    result = []
    for i in a:
        result.append(i*3)
    result
[3, 6, 9, 12]

>>> a = [1,2,3,4]
    [i*3 for i in a]
    
#짝수이면 3배
>>> a = [1,2,3,4]
    result = []
    for i in a:
       if i%2 == 0: 
           result.append(i*3)
    result
[6, 12]
>>> a = [1,2,3,4]
    [i*3 for i in a if i%2 == 0]

0개의 댓글