2019년 11월 24일 일요일

파이썬 : dic(사전)의 사용법




파이썬에서 dic(사전)은 key:value 구조로 정의된다.

가령 아래처럼 a는 100이고 b는 200인 사전에서
c는 300을 업데이트 하면 사전에 새로운 c라는 색인이 생긴다.

dicDay = {"0":"오늘""1":"내일""2":"모레"}
numDay = list("122110")
day_list = []
for a in numDay:
    day_list.append(dicDay[a])
 
print(day_list)
 
>
{'a'100'b'200'c'300}
cs


또한 기존의 key을 다른 value로 업데이트 해도 덮어씌워진다.

dicThk.update({'a':10}) #기존에 있던 값도 update 할 수 있음
print(dicThk)
{'a': 10, 'b': 200, 'c': 300}


파이썬에서 사전형식은 많은 value들을 최소한의 코딩으로 indexing할때 유용하게 사용된다.
엑셀을 해본 사람이라면 vlookup에 대해서 알 것이다.

사전은 마치 vlookup의 index set 역할을 한다.

아래 예시를 보자.

dicDay = {"0":"오늘", "1":"내일", "2":"모레"}
numDay = list("122110")

day_list = []

for a in numDay:
    day_list.append(dicDay[a])

print(day_list)
['내일', '모레', '모레', '내일', '내일', '오늘']


1,2,2,1,1,0이라는 리스트를 한글로 변환하고 싶은데
if문을 일일히 써주기가 너무 번거롭다.

따라서 0은 오늘이고 1은 내일, 2는 모레라는 사전을 한 개 정의해 줌으로써
깔끔하게 한글로 된 day_list를 만들 수 있다.

파이썬 : set으로 집합연산 하기


파이썬에서 집합연산을 하기 위해서는
set을 활용하면 된다.

[]형태의 리스트와 {} 형태의 set의 가장 큰 차이는
list는 중복을 허용하고
set은 중복을 허용하지 않는다는 점이다.

아래 코드를 통해 list와 set의 이러한 차이를 정확히 알 수 있다.

a = list('apple')
b = set('apple')

print(a)
print(b)
['a', 'p', 'p', 'l', 'e']
{'p', 'a', 'e', 'l'}


set의 가장 유용한 점은 '집합 연산'을 할 수 있다는 것이다.
set을 통해서
2개의 set끼리의 교집합, 차집합, 합집합, 여집합 등 모든 집합 연산이 가능하다.


'''Set의 가장 중요한 특징은 집합 연산에 쓰인다는 것이다.'''
a = set('apple is delicious')
b = set('banana is also yummy')
print("a = {}".format(a))
print("b = {}".format(b))
print()
print("a|b = {}".format(sorted(list(a|b)))) #합집합
print("a-b = {}".format(sorted(list(a-b)))) #차집합
print("b-a = {}".format(sorted(list(b-a)))) #차집합
print("a&b = {}".format(sorted(list(a&b)))) #교집합
print("a^b = {}".format(sorted(list(a^b)))) #여집합
a = {'a', 's', ' ', 'c', 'u', 'i', 'p', 'e', 'l', 'o', 'd'}
b = {'a', 's', ' ', 'y', 'u', 'm', 'i', 'l', 'o', 'b', 'n'}

a|b = [' ', 'a', 'b', 'c', 'd', 'e', 'i', 'l', 'm', 'n', 'o', 'p', 's', 'u', 'y']
a-b = ['c', 'd', 'e', 'p']
b-a = ['b', 'm', 'n', 'y']
a&b = [' ', 'a', 'i', 'l', 'o', 's', 'u']
a^b = ['b', 'c', 'd', 'e', 'm', 'n', 'p', 'y']


이클립스에 파이썬 개발환경 구축하기

2019년 11월 18일 월요일

파이썬 : 리스트로 로그(히스토리) 기록하기



앞에서 만들어봤던 up&down 게임에서
리스트를 사용해서 input값들의 히스토리까지 기록해보는 프로그램을 만들어 볼 것이다.

우선 his라는 리스트를 만들어서 input값이 들어올 때 마다 리스트에 넣을 것이다.

그리고 printHistory()라는 함수를 만들어서
정답을 맞춘 이후 그동안의 모든 history (his리스트)가 출력될 수 있도록 할 것이다.

코드를 바로 보자.


'''Up&Down 게임의 History를 리스트로 만들어서 저장해보기'''
from random import randint  #randint import
com_num = randint(1,100)    #1부터 100사이 난수 생성

his = [] #입력값 History 저장용

def printHistory():
    print("*** History ***")
    for h in his:
        print(h, end=" ")  #[Tip] Ctrl+P 누르면 Parameter 추천 볼 수 있음
    print() # Enter치기
    print("*** End of History ***")

while True: # break가 나오기 전까지 계속 돌려라
    ans = input("1~100 사이의 숫자를 입력하세요 : ")
    #print("입력값 = {}".format(ans))
    his.append(ans)

    #정답검사
    ans = int(ans)  # input으로 입력된 값은 str이기 때문에 int로 바꿔줘야 됨
    if ans > com_num:
        print("Down!")
    elif ans < com_num:
        print("Up!")
    else:
        print("정답입니다^^")
        break   #정답이면 while문 빠져나오기

printHistory()  # printHistory 호출


1~100 사이의 숫자를 입력하세요 : 50
Down!
1~100 사이의 숫자를 입력하세요 : 25
Up!
1~100 사이의 숫자를 입력하세요 : 40
Up!
1~100 사이의 숫자를 입력하세요 : 45
정답입니다^^
*** History ***
50 25 40 45 
*** End of History ***




파이썬 : Up&Down(업앤다운) 게임 만들기



파이썬으로 Up&Down 게임을 만들어 볼것이다.

필요한 것은 딱 두가지이다.
임의로 뽑은 1~100 사이의 난수 (com_num)
그리고 사용자가 입력한 값(ans)

간단한 구현이므로 코드를 바로 보자.

randint로 만들어낸 com_num과
input에서 입력받은 ans를 비교하는 것이다.

이 코드에서의 포인트는 ans = int(ans)로 변환해주는 부분이다.
input을 통해 입력받은 ans는 string 타입이기 때문에
com_num과의 비교를 하려면 int타입으로 변환시켜줘야 하기 때문이다.

이 부분만 주의하면 재밌게 코딩을 해볼 수 있다.


# 1~100사이 난수 생성
# 사용자가 임의의 숫자 입력
# 난수랑 비교해서 "Up, Down, 정답" 맞추기 출력

from random import randint  #randint import
com_num = randint(1,100)    #1부터 100사이 난수 생성

while True: # break가 나오기 전까지 계속 돌려라
    ans = input("1~100 사이의 숫자를 입력하세요 : ")
    #print("입력값 = {}".format(ans))

    #정답검사
    ans = int(ans)  # input으로 입력된 값은 str이기 때문에 int로 바꿔줘야 됨
    if ans > com_num:
        print("Down!")
    elif ans < com_num:
        print("Up!")
    else:
        print("정답입니다^^")
        break   #정답이면 while문 빠져나오기

파이썬 : 구구단 만들기



파이썬으로 구구단을 만들어보자.

우선 필요한 것은 두 가지 이다.

(1) 구구단의 기본 단수
(2) 단수에 곱해질 수 (1부터 9까지)

이 두개의 변수만 반복시키면서 81개의 구구단을 멋드러지게 출력할 수 있다.

단 수는 dan이라는 변수로 셋팅해서 2부터 9까지 돌릴 것이고
뒤에 곱할 수는 i라는 임의의 변수로 1부터 9까지 돌릴 것이다.

그럼 결과적으로 2*1=2, 2*2=2, ......, 9*8=72, 9*9=81 까지
모든 구구단이 아름답게 출력될 것이다.


아래의 간단한 코드를 보자.
파이썬에서 구구단을 만드는데 필요한 코드는 단 3줄이다.

for dan in range(2,10): #2단부터 9단까지 돌려라
    for i in range(1,10):   #*1 *10까지 출력해라
        print("{} * {} = {}".format(dan, i, dan*i))


이를 좀 더 보기좋게 다듬으면 아래처럼 만들 수 있다.

dan = 2 #초기값 셋팅
for dan in range(2,10): #2단부터 9단까지 돌려라
    print("")   #한줄 띄기
    print("---{} 단----".format(dan))
    for i in range(1,10):   #*1 *10까지 출력해라
        print("{} * {} = {}".format(dan, i, dan*i))
print("----------")

파이썬 : 가위바위보 게임 만들기



파이썬으로 아주 간단한 가위바위보 게임을 만들어보자.

우선 random 모듈에서 randint 함수를 사용할 것이다.
그리고 1,2,3  세 개의 숫자를 각각 가위, 바위, 보에 배정할 것이다.

결과적으로 우리가 하는 가위바위보 게임은
아래와 같이 매우 간단한 코드로 구현될 수 있다.


from random import randint # 난수 생성 모듈 호출

r = randint(1,3)
if r == 1 :  #가위바위보
    print("가위")
elif r == 2 :
    print("바위")
else :
    print("보")