TIL 240226

hyeo71·2024년 2월 26일
0

2024 내배캠 AI 트랙

목록 보기
39/108

가위바위보 웹사이트

flask

가위바위보 판별하기

def judgment(computer, user):
    if (
        (computer == "가위" and user == "보")
        or (computer == "바위" and user == "가위")
        or (computer == "보" and user == "바위")
    ):
        return "졌습니다"
    elif computer == user:
        return "비겼습니다"
    else:
        return "이겼습니다"

judgment 라는 이름의 함수를 만들어 가위바위보의 승패를 판별하는 함수를 만들어 필요할 때 사용한다.


dict에서 무작위 뽑기

import random

RPS = {"가위": "✌️", "바위": "✊", "보": "🖐️"}

user_receive = request.args.get("RPS")
computer_receive = random.choice(list(RPS.keys()))
result_receive = judgment(computer_receive, user_receive)

song = ScoreBoard(
    user_choice=RPS[user_receive],
    computer_choice=RPS[computer_receive],
    result=result_receive,
)

random.choice(리스트 or 튜플)의 형식으로 사용하기 때문에 가위, 바위, 보로 이루어진 RPS.keys()를 리스트로 자료형을 바꿔서 사용하면 가위, 바위, 보 중 하나의 값을 무작위로 저장할 수 있다.

DB에 저장할 땐 웹사이트에서 이모지를 사용할 계획이기 때문에 dict[key]를 사용하여 value 값인 이모지를 저장


이전 게임 기록 & DB에서 특정값을 가진 행의 개수

score_list = ScoreBoard.query.all()
prev_result = ScoreBoard.query.order_by(ScoreBoard.id.desc()).limit(1).all()
win = len(ScoreBoard.query.filter_by(result="이겼습니다").all())
lose = len(ScoreBoard.query.filter_by(result="졌습니다").all())
draw = len(ScoreBoard.query.filter_by(result="비겼습니다").all())

prev_result: DB를 id를 기준으로 내림차순하고 가져올 행의 개수를 1개로 제한하면 가장 최근에 한 게임의 정보를 가져올 수 있다.

win, lose, draw: filter_by를 사용하여 특정값을 가지는 행만을 고르고 len 함수를 사용하여 그 개수를 구한다. 이를 통계로 사용한다.


과제 예시를 보며 거의 완성했다고 생각한다. 하지만 이전 게임 기록을 보여주는 구문이 list형식으로 데이터를 가져오는데 이를 출력하는 과정에서 "[ ]" 기호가 같이 출력되는 문제가 있다. 내일 이를 수정할 예정이다.

0개의 댓글