본문 바로가기

카테고리 없음

파이썬 가위바위보 게임 만들며 배우는 python

간단히 랜덤 함수와 딕셔너리, 리스트를 이용해서 가위바위보 게임을 만들어봤다. 파이썬 배울수록 강력한 코드라는 생각이 든다. 러닝 바이 두잉 파이썬ㅎ

 

일단 처음에는 노가다로 직접 타이핑 하면서 문법 익히는게 국룰이지. 파이썬은 간편한 문법인데 다른 언어에 익숙해있던 상태에서 접하니까 또 새롭다. 

 

[초급편]

일단 무식하게 if 와 elif 로 덕지덕지 짜봤다. 쫌 지저분 하지만 간단히 들어간 문법을 설명하겠다.

  • random 함수 이용해서 pc의 가위바위보 선택
  • input 을 써서 유저의 입력
  • 입력받은 내용과 pc의 선택 출력
  • if / elif 를 통해 win/ lose / same 판단. = 이기고 지고 비긴 경우 판단
    import random
    listPc = ['가위','바위','보']
    pc = random.choice(listPc)
    user = input("뭐낼래?=")
    
    print("내가 낸거 / pc가 낸거")
    print(f"{user}/ {pc}")


    if user == '가위':
        if pc == '가위':
            print("same")
        elif pc == '바위':
            print("lose")
        elif pc == '보':
            print("win")

    elif user == '바위':
        if pc == '가위':
            print("win")
        elif pc == '바위':
            print("same")
        elif pc == '보':
            print("lose")

    elif user == '보':
        if pc == '가위':
            print("lose")
        elif pc == '바위':
            print("win")
        elif pc == '보':
            print("same")

 

 

 


사실 어렵지 않은 간단한 코드였지만.. 그래도 배운지 얼마 안된 파이썬 코드로 작성할라니까 여기저기서 문법 에러가 막났다. ㅋㅋ

이것저것 찾아보며 문법에러 다 고쳤더니 중간에 버그 나고 터지고 해서 디버깅도 몇번 하면서 완성했다.... ㅋㅋ

 

[조금 문법 업그레이드 된 중급편?] 

아래는 조금더 고급(?) 기술인 list 와 dictionary와 for문 을 사용해서 업그레이드 했다. 

import random


#0 가위,이기는 규칙?  2 보  
#1 바위,이기는 규칙?  0 가위
#2 보  ,이기는 규칙?  1 바위

#rule은 내꺼:[이기는 번호,지는 번호] 로 이루어짐
rule ={ 0:[2,1] ,1:[0,2], 2:[1,0] }
name=["가위","바위","보"]

score =0



for i in range(5): 
    
    # user input 을 받는다.
    user = int(input(f"0:가위, 1:바위, 2:보 입력 ")  )  
    
    #com input random 으로 뽑느다.
    com = int(random.choice( [0,1,2]))
    
    print (f"나= {name[user]} vs 컴 = {name[com]}" )
    
    
    #이미 딕셔너리로 [0]에는 이기는거 [1]에는 지는거 써놨다.
    if rule[user][0] == com:
        score = score+1
        print (f"이겼다 !!!")
    
    elif rule[user][1] == com:
        print (f"졌다..")
    
    else:
        print (f"비겨따~")
        
    #한판 하고 점수표기
    print ("-------------")
    print (f"- 내점수: {score} -")
    print ("-------------\n\n")

print (f"끝!")

점점 익숙해지고는 있는데.. 와.. 여기 익숙해져 버리면 c#으로 돌아가기 힘들 거 같은데 라는 불길한 예감도 든다...ㅎ

조코딩의 파이썬 강의를 보면서 배우고 있으며 이제 파이썬의 함수까지 배웠다. 사실 인간적으로 제목에 쓰여있는 '5시간 만에 파이썬 개발자가 되기'는.. 쉽지 않을 거 같은데?

5시간 동안 문법 한번 쫘악 훑어보기 해봤음. 정도? 음.. 그 정도면 개발자라고 볼 수 있는 건가. 문법 뗀 거면 뭐... ㅋ 그래 뭐.. ㅋ

 




자료형 리스트, 딕셔너리 정도는 다른 언어에도 있는 것들이라 공부해보니 좀 업그레이드 버전이라고 느껴졌었다. 근데 와.. 집합 자료형은 진짜 대박이더라. 차집합, 교집합, 합집합 빼오는 거 한큐에 됨ㅋ 와 우.


뭐.. 도감 시스템이나, 아이템 착용 조건? 스킬 습득 능력치? 같은 데서 조회할 때 쓰기 딱 좋을 듯!


C#이나 C++로는 진짜 이중 배열 돌면서 가져오고 막 그래야 할 것 같은데 단 몇 줄에 돼버리는 거 진짜 개깜놀스... ' ㅁ')b

#집합 자료형
#set() *중복금지(자동)
a = set( [1,2,3,4,5] )
b = set( [3,4,5,6,7] )


# 교집합
print(a&b)

# 합집합
print(a|b)

# 차집합 
print(a-b)
print(b-a)



음.. 나름 좀 규모 있는 프로젝트를 만약 파이썬으로 한다고 가정해 봤는데 들여 쓰기가 좀 문제가 되지 않을까 괜히 걱정임.ㅋ


함수/ if / for / while 쓸 때 줄 맞추면(들여 쓰기) 내부에서 돌아가고 줄 안 맞추면 외부에서 돌아가기 때문에 여기에서 한번 큰 사고 날 거 같은 불길한 기분이..ㅋ



암튼 배워두면 나중에 꼭 써먹기 좋은 언어인 것 같으므로 꼭 잘 배워두길 바람. 몇 년 전에 뭣도 몰랐으면서 (걍 또 새로 배우기 귀찮아서 였을듯..) '뭐 이딴 문법이 다있어' 하면서 비난했던 과거의 내 잘못을 반성합니다.ㅠㅠ

그때의 나에게 가서 궁뎅이를 차 버리고 싶을 정도로 강려크한 언어임! 파이썬 개멋짐. ' ㅁ ')b 강츄.ㅋ

 

파이썬으로만든-가위바위보게임-썸네일