Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"liveServer.settings.port": 5500
}
10 changes: 0 additions & 10 deletions Problem Statement 1/README.md

This file was deleted.

10 changes: 0 additions & 10 deletions Problem Statement 2/README.md

This file was deleted.

117 changes: 117 additions & 0 deletions Problem Statement 3/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="stylesheet" href="https://pyscript.net/alpha/pyscript.css" />
<script defer src="https://pyscript.net/alpha/pyscript.js"></script>
<script src="https://kit.fontawesome.com/6c1c75e071.js" crossorigin="anonymous"></script>

<py-env>
- numpy
- paths:
- ./utils.py
</py-env>
<title>Simple Calculator in Py-Script</title>
</head>

<body>

<div class="bg-gray-200 w-screen h-screen flex justify-center items-center">
<div class="w-64 h-auto bg-white rounded-2xl shadow-xl border-4 border-gray-100">
<div class="w-auto mx-3 my-2 h-6 flex justify-between">
<div id="date" class="text-sm"></div>

<div class="flex items-center text-xs space-x-1">
<i class="fas fa-signal"></i>
<i class="fas fa-wifi"></i>
<i class="fas fa-battery-three-quarters text-sm"></i>
</div>
</div>
<div class="w-auto m-3 h-28 text-right space-y-2 py-2">
<!-- <div class="text-gray-700">{number}</div> -->
<div class="text-gray-700"></div>
<!-- <div class="text-black font-bold text-3xl">{sum}</div> -->
<p id="output" class="mb-5 p-5 font-extrabold rounded-xl text-white bg-black text-right"></p>
</div>


<div class="w-auto m-1 h-auto mb-2">

<div class="m-2 flex justify-between">
<div id="percent" class="btn-grey" pys-onClick="display1" value='%'>%</div>
<div id="AC" class="btn-yellow" pys-onClick="clear">AC</div>
<div id="C" class="btn-yellow" pys-onClick="clear">C</div>
<div id="D" class="btn-grey" pys-onClick="delete">
<i class="fas fa-backspace"></i>
</div>
</div>

<div class="m-2 flex justify-between">
<div id="square" class="btn-grey" pys-onClick="display">
<!-- <div class="btn-grey"> -->
<i class="fa-solid fa-square-root-variable"></i>
</div>
<div id="openQ" class="btn-grey" pys-onClick="display2" value='('>(</div>
<div id="closedQ" class="btn-grey" pys-onClick="display3" value=')'>)</div>
<div id="slash" class="btn-orange" pys-onClick="display4" value='/'>
<i class="fas fa-divide"></i>
</div>
</div>

<div class="m-2 flex justify-between">
<div id="seven" class="btn-grey" pys-onClick="display5" value='7'>7</div>
<div id="eight" class="btn-grey" pys-onClick="display6" value='8'>8</div>
<div id="nine" class="btn-grey" pys-onClick="display7" value='9'>9</div>
<div id="star" class="btn-orange" pys-onClick="display8" value='*'>
<i class='fa-solid fa-xmark'></i>
</div>
</div>

<div class="m-2 flex justify-between">
<div id="four" class="btn-grey" pys-onClick="display9" value='4'>4</div>
<div id="five" class="btn-grey" pys-onClick="display10" value='5'>5</div>
<div id="six" class="btn-grey" pys-onClick="display11" value='6'>6</div>
<div id="minus" class="btn-orange" pys-onClick="display12" value='-'>
<i class="fas fa-minus"></i>
</div>
</div>

<div class="m-2 flex justify-between">
<div id="one" class="btn-grey" pys-onClick="display13" value='1'>1</div>
<div id="two" class="btn-grey" pys-onClick="display14" value='2'>2</div>
<div id="three" class="btn-grey" pys-onClick="display15" value='3'>3</div>
<div id="plus" class="btn-orange" pys-onClick="display16" value='+'>
<i class="fas fa-plus"></i>
</div>
</div>

<div class="m-2 flex justify-between">
<div id="zero" class="btn-grey-jumbo" pys-onClick="display17" value='0'>
0<i class="fa-solid fa-square-0"></i>
</div>
<div class="flex w-full ml-3 justify-between justify-center">
<div id="dot" class="btn-grey" pys-onClick="display18" value='.'>.
<i class="fas fa-period"></i>
</div>
<div id="calc" class="btn-green" pys-onClick="calc" value='='>
<i class="fas fa-equals"></i>
</div>
</div>

</div>

<div class="flex justify-center mt-5">
<div class="w-20 h-1 bg-gray-100 rounded-l-xl rounded-r-xl"></div>
</div>

</div>
</div>
</div>

<py-script src="./main.py"></py-script>
</body>

</html>
140 changes: 140 additions & 0 deletions Problem Statement 3/main.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,140 @@
# import numpy as np
from math import sqrt

from utils import add_class, now, add_classes


# insert date
date = now()
pyscript.write('date', f"{date}")


output_el = Element('output').element

percent_el = Element('percent').element

oq_el = Element('openQ').element
cq_el = Element('closedQ').element
s_el = Element('slash').element
zero_el = Element('zero').element
one_el = Element('one').element
two_el = Element('two').element
three_el = Element('three').element
four_el = Element('four').element
five_el = Element('five').element
six_el = Element('six').element
seven_el = Element('seven').element
eight_el = Element('eight').element
nine_el = Element('nine').element
star_el = Element('star').element
minus_el = Element('minus').element
plus_el = Element('plus').element
dot_el = Element('dot').element


# Making button works
def display(*args):
output_el.innerHTML = eval(str(sqrt(int(output_el.innerHTML))))
def display1(*args):
output_el.innerHTML += percent_el.getAttribute('value')
def display2(*args):
output_el.innerHTML += oq_el.getAttribute('value')
def display3(*args):
output_el.innerHTML += cq_el.getAttribute('value')
def display4(*args):
output_el.innerHTML += s_el.getAttribute('value')
def display5(*args):
output_el.innerHTML += seven_el.getAttribute('value')
def display6(*args):
output_el.innerHTML += eight_el.getAttribute('value')
def display7(*args):
output_el.innerHTML += nine_el.getAttribute('value')
def display8(*args):
output_el.innerHTML += star_el.getAttribute('value')
def display9(*args):
output_el.innerHTML += four_el.getAttribute('value')
def display10(*args):
output_el.innerHTML += five_el.getAttribute('value')
def display11(*args):
output_el.innerHTML += six_el.getAttribute('value')
def display12(*args):
output_el.innerHTML += minus_el.getAttribute('value')
def display13(*args):
output_el.innerHTML += one_el.getAttribute('value')
def display14(*args):
output_el.innerHTML += two_el.getAttribute('value')
def display15(*args):
output_el.innerHTML += three_el.getAttribute('value')
def display16(*args):
output_el.innerHTML += plus_el.getAttribute('value')
def display17(*args):
output_el.innerHTML += zero_el.getAttribute('value')
def display18(*args):
output_el.innerHTML += dot_el.getAttribute('value')


console.log(percent_el)



# setting C to clear LCD
def clear(*args):
output_el.innerHTML = ''


# Delete functionality
def delete(*args):
output_el.innerHTML = output_el.innerHTML[:-1]


# making the calculaton
def calc(*args):
try:
output_el.innerHTML = eval(output_el.innerHTML)
except:
output_el.innerHTML = 'XXXXXXXXXXXXXXXX!'



# Enable Keyboard Input
def key(e):
if e.key == "Enter":
calc()
elif (e.which):
keynum = e.which
console.log(ord(keynum))
display(ord(keynum))

output_el.onkeypress = key

output_el.onclick = calc

document.addEventListener("keydown", key, False)


# add classes on load
btn_yellow = 'bg-yellow-100 shadow-md rounded-2xl w-12 h-12 text-yellow-600 font-medium flex justify-center items-center cursor-pointer'
btn_orange = 'bg-yellow-500 shadow-md rounded-2xl w-12 h-12 text-white font-medium text-xl flex justify-center items-center cursor-pointer'
btn_grey = 'bg-gray-200 shadow-md rounded-2xl w-12 h-12 text-black font-medium flex justify-center items-center cursor-pointer'
btn_green = 'bg-green-500 shadow-md rounded-2xl w-12 h-12 text-white font-medium text-xl flex justify-center items-center cursor-pointer'
btn_grey_jumbo = 'bg-gray-200 shadow-md rounded-2xl w-full h-12 text-black font-medium flex justify-center items-center cursor-pointer'

btn_yellow_el = document.getElementsByClassName('btn-yellow')
btn_orange_el = document.getElementsByClassName('btn-orange')
btn_grey_el = document.getElementsByClassName('btn-grey')
btn_green_el = document.getElementsByClassName('btn-green')
btn_grey_jumbo_el = document.getElementsByClassName('btn-grey-jumbo')


def onLoad(*args):
def divLoop(divCollection, div_classes):
for div in divCollection:
add_classes(div, div_classes)

divLoop(btn_yellow_el, btn_yellow)
divLoop(btn_orange_el, btn_orange)
divLoop(btn_grey_el, btn_grey)
divLoop(btn_green_el, btn_green)
divLoop(btn_grey_jumbo_el, btn_grey_jumbo)

onLoad()
24 changes: 24 additions & 0 deletions Problem Statement 3/utils.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
from datetime import datetime as dt


def format_date(dt_, fmt="%m/%d/%Y, %H:%M:%S"):
return dt_.strftime(fmt)


# def now(fmt="%X"):
# return format_date(dt.now(), fmt[:-3])
def now(fmt="%X"):
return format_date(dt.now(), fmt)[:-3]


def remove_class(element, class_name):
element.element.classList.remove(class_name)


def add_class(el, class_name):
el.classList.add(class_name)


def add_classes(element, class_list):
for klass in class_list.split(" "):
element.classList.add(klass)
Binary file added Py-Script working Calculator - 1 July 2022.mp4
Binary file not shown.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# GAME OF CODES


WORKTHROUGH OF VIDEO LINK: https://www.loom.com/share/2e8c6c93a70f476786af0cc3a7195b39

# How to Register in GAME OF CODES

Expand Down