-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.py
More file actions
41 lines (32 loc) · 1.36 KB
/
main.py
File metadata and controls
41 lines (32 loc) · 1.36 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
from fastapi import FastAPI, Request
from fastapi.responses import HTMLResponse
from fastapi.staticfiles import StaticFiles
from fastapi.templating import Jinja2Templates
import random
app = FastAPI()
app.mount("/static", StaticFiles(directory="static"), name="static")
templates = Jinja2Templates(directory="templates")
@app.get("/", response_class=HTMLResponse)
def homepage(request: Request):
return templates.TemplateResponse("index.html", {"request": request, "result": None})
@app.get("/play", response_class=HTMLResponse)
def play(request: Request, yourstr: str):
yourdict = {'s': -1, "p": 0, "sc": 1}
reverseDict = {-1: "Stone", 0: "Paper", 1: "Scissor"}
if yourstr not in yourdict:
result = {"error": "Invalid input. Use 's', 'p', or 'sc'."}
return templates.TemplateResponse("index.html", {"request": request, "result": result})
you = yourdict[yourstr]
computer = random.choice([1, -1, 0])
if computer == you:
outcome = "Draw"
elif (computer == -1 and you == 0) or (computer == 0 and you == 1) or (computer == 1 and you == -1):
outcome = "You Win"
else:
outcome = "You Lose"
result = {
"You Chose": reverseDict[you],
"Computer Chose": reverseDict[computer],
"Result": outcome
}
return templates.TemplateResponse("index.html", {"request": request, "result": result})