def judgment(computer, user):
if (
(computer == "가위" and user == "보")
or (computer == "바위" and user == "가위")
or (computer == "보" and user == "바위")
):
return "졌습니다"
elif computer == user:
return "비겼습니다"
else:
return "이겼습니다"
judgment 라는 이름의 함수를 만들어 가위바위보의 승패를 판별하는 함수를 만들어 필요할 때 사용한다.
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 값인 이모지를 저장
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형식으로 데이터를 가져오는데 이를 출력하는 과정에서 "[ ]" 기호가 같이 출력되는 문제가 있다. 내일 이를 수정할 예정이다.