Python 43

[TIL] 리스트 생성 표현

※ 리스트 내포 - 리스트 내포(list comprehension)은 간단하고 강력한 파이썬 문법이다. 기본적인 리스트 내포의 구조는 [expr for x in 반복가능객체] 이다. 이 문법은 복잡해 보일지라도 매우 직관적인데 이는 표현식과 for문이 결합된 문법이다. 한 줄에 이어 쓰기 때문에 들여쓰기의 규칙은 없으며 콜론도 없다. [x for x in range(1, 10)] # 출력 결과 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 이렇게 리스트를 생성하고자 할때 for 문을 리스트 생성 표현에 결합하여 사용하면 더욱 간소화하여 작성할 수 있다. 익숙치 않다면 일반적인 방식으로 리스트를 생성하듯이 만들어도 무방하다. ※ 리스트 내포 확장 - 리스트 내포를 사용할 때 데이터를 더욱 섬세하..

[TIL] For 문

※ for~continue - for 루프 중 continue를 만나면 for문의 나머지 코드 블록의 수행을 건너뛰고 다음 항목으로 넘어가 수행한다. 자판기와 같은 예시로는 다음과 같이 만들 수 있다. coin_box = [500, 500, 500, 50, 10, 100, 100, 10, 100, 50] for c in coin_box: if c != 100:# 100원이 아닌 경우는 continue# continue를 통해 다음 항목으로 넘어간다 print("100원 있음")# continue를 통해 100원 항목과 일치하면 출력 break # 출력 결과 100원 있음 ※ for~else - 조건문에서의 else는 조건문의 마지막에 오기 때문에 앞 조건들이 모두 False 인 경우만 실행이 된다는 것은..

[TIL] 조건 표현식

※ 조건 표현식 - 파이썬에서는 C 언어에 있는 3항 연산자와 같이 작동을 하는 표현식(expression)이 있는데 기본적인 문법은 A if 조건식 else B 이다. 이 문법을 이해하기 쉽게 해석하자면 조건식이 True 값일 경우 A를 수행하고 False인 경우는 B를 수행하라는 의미이다. 사용 예시는 다음과 같다. switch = 0 print("ON") if switch == 1 else print("OFF") # 출력 결과 OFF 이를 일반적인 if~else문으로 바꾼다면 아래와 같다. switch = 0 if switch == 1: print("ON") else: print("OFF") # 출력 결과 OFF 조건 표현식으로 작성할 경우 코드의 길이를 줄여주어 가독성과 깔끔함을 추구할 수 있는데..

[TIL] Set 변환

※ set -> 리스트 - set은 순서를 가지지 않는 다는 특징으로 정렬될 수 없다는 문제점이 있다. 이러한 문제를 해결하는 가장 쉬운 방법은 내장함수인 sorted 함수를 사용하는 것이다. # 예시 1 print(number) # 출력 : {1, 82, 3, 42, 53, 99, 20, 15} sorted(number) # 출력 : [1, 3, 15, 20, 42, 53, 82, 99] 위 예시와 같이 sorted 함수로 정렬을 하거나 다른 방법으로는 리스트와 같이 다른 타입으로 변환을 시킨뒤 정렬을 하면 변환할 수 있다. # 예시 2 number_list = list(number) number_list.sort() print(number_list) # 출력 : [1, 3, 15, 20, 42, 53..

[TIL] Set 타입

※ 셋(set) 타입 - 셋 타입은 항목 간에 순서가 없다는 특징과 항목간 중복을 허용하지 않는다는 특징이 있다. 예시로 {1, 1, 1, 2, 2} 와 같은 값을 set 화 시킨다면 {1, 2} 만 남게 된다. 이러한 점은 사전과 비슷하다고 볼 수 있는데 사전도 동일한 값을 지닌 key의 중복을 허용하지 않는 특성이 있고 이를 통해 알 수 있는 것은 set 타입의 항목도 변경 불가능한 객체여야 한다는 것을 짐작할 수 있다. - 기본적으로 셋(set)은 우리가 고등학교때 배운 집합과도 같은 성질인데 집합의 연산에는 합집합, 교집합, 차집합, 여집합이 있다. set 또한 마찬가지로 표기 기호는 완전히 동일하지는 않지만 셋 타입도 집합처럼 각자의 집합을 표기할 수 있는데 예시는 다음과 같다. A|B # 합집..

[TIL] 리스트와 사전의 상호변환

※ 사전을 리스트로 변환 - 타입 변환을 이용하여 사전을 리스트로 변경해 key 목록의 리스트를 얻을 수 있다. 하지만, 여기서 주의해야 할 점은 사전을 리스트로 변환한 후에는 value 값에 대한 정보가 사라진다는 점인데 이는 두 타입의 항목 형식이 다르기 때문에 발생하는 차이다. dict = {"가":1, "나":2, "다":3, "라":4} list(dict) print(dcit) # 출력 결과 ["가", "나", "다", "라"] ※ 리스트를 사전으로 변환 - 위 예시와는 반대로 리스트를 사전으로 변환할 수 있는데 일반적으로 한개의 입력값을 두개로 나누어 표현할 수 없듯이 일반적으로 리스트를 사전으로 변환시키려고 한다면 오류가 발생한다. 하지만, 다음 예시와 같은 리스트들은 사전으로 변환할 수 있..

[TIL] 사전의 연산

※ 사전의 연산 ○ 색인 연산 -사전의 색인은 key 값을 이용해 리스트와 같이 시퀀스 타입의 색인 연산 방식과 동일하게 작동한다. 다만 key값을 사용자가 지정할 수 있다는 것이 차이점이다. 또한 사전에는 시퀀스 타입과는 달리 항목에 순서가 없기 때문에 분할 연산[Slicing]을 지원하지 않아 해당 기능을 사용할 수 없다는 것이 특징이다. 다음 예시와 같이 key 값이 '라' 인 항목을 생성할 수 있다. dict['라']=4 print(dict) # 출력 결과 {'가':1, '나':2, '다':3, '라':4} ○ update 메소드 - 사전에 항목을 추가하는 방식은 색인 연산 외에도 update 메소드를 이용해 할 수 있는데 dict.update({'라':0, '마':5}) print(dict) #..

[TIL] 파이썬 : 사전(Dictionary)

※ 사전(Dictionary) - 사전(dcit)의 형태는 마치 영한사전에서 영어단어와 그 뜻이 연결되어 하나의 항목을 이루는 것처럼 key와 연결된 value가 하나의 항목을 이룬다. 사전의 key는 시퀀스 타입객체의 색인(index)와 같은 기능을 한다고 생각하면 이해하기 쉽다. 사전의 생성은 {key:value} 와 같이 key와 value를 중괄호로 감싼 형태다. 나라와 인구수를 사전으로 생성하면 다음의 예시와 같다. poppul_dict = {'China': 1367485388, 'India': 1251695584, 'Indonesia': 321368864, 'America': 513949445, 'Brazil': 255993674} 사전은 시퀀스 타입과는 구별되는 사전의 항목들이 순서를 가지지..

[TIL] 동전 앞면/뒷면 맞추기 게임

※ 두 동전의 앞면/뒷면 맞추기 게임하기 - 첫 동전에서 앞면이 나올 확률 P(A)는 1/2고, 두 번째 동전에서 앞면이 나올 확률 P(B)는 1/2일 때, 두 개의 동전을 동시에 던졌을 때 모두 앞면이 나올 확률은 1/4 이다. 이를 터틀 스크린을 이용한 게임을 프로그램으로 코딩하면 다음과 같다. import turtle as t import random import time coin_face = [ "coin-100-f.gif", "coin-100-b.gif"]# 실행하는 파일 경로에 해당하는 파일이 위치해야 작동 def coin_game(): global c_cnt t.clear() coin1 = random.randint(0, 1) coin2 = random.randint(0, 1) cq1 = i..

[TIL] 피보나치 트리 그리기 (21.12.08)

※ 피보나치 트리 그리기 import turtle as t def fibo(n): if n == 0: return 0 elif n == 1: return 1 else: return fibo(n-1) + fibo(n-2) def fibo_tree(length, n): if n > 0: t.forward(length) t.right(30) fibo_tree(length*3/4, n-1) t.left(60) fibo_tree(length*3/4, n-2) t.right(30) t.backward(length) t.setup(600, 600) s = t.Screen() t.left(90) t.color("green") t.penup() t.goto(0, -200) t.pendown() t.speed(0) n =..