Loading...
More Python Posts
import os, json, boto3, requestsfrom flask import Flask, request, jsonifyfrom flask_cors import CORS, cross_originfrom random import shuffleapp = Flask(__name__)cors = CORS(app)dynamodb = boto3.resource("dynamodb", region_name="us-east-1")app.url_map.strict_slashes = FalseSECRET_KEY = os.environ.get("SECRET_KEY")@app.route("/teks")def teks_request():teks_file = open("teks.json", "r")data = json.load(teks_file)return jsonify(data)@app.route("/teks/find/113.41.<int:teks_id>.<string:section_id>")def teks_find_request(teks_id, section_id):teks_file = open("teks.json", "r")data = json.load(teks_file)for item in data:if item["id"] == teks_id:for child in item["children"]:if child["id"] == section_id:return {"tek": item, "content": child["content"]}return jsonify([f"Something went wrong. TEKS section id of {section_id} cannot be found within TEKS section {teks_id}."])@app.route("/lessonplan/read/<id>")def read_lesson_plan(id):lesson_table = dynamodb.Table("Lesson_Plans")items = lesson_table.scan()['Items']for lesson in items:if (lesson["uuid"] == id):return jsonify(lesson)return {"error": "id does not exist", "section": id}@app.route("/teks/<int:teks_id>")def teks_id_request(teks_id):teks_file = open("teks.json", "r")data = json.load(teks_file)for item in data:if item["id"] == teks_id:return jsonify(item)return jsonify([f"Something went wrong. TEKS id of {teks_id} cannot be found."])@app.route("/assessment/write", methods=["GET", "POST"])def assessment_write():assessment_json = request.jsonassessment_data = dict(assessment_json)assessment_table = dynamodb.Table("Assessments")assessment_table.put_item(Item=assessment_data)if assessment_data == get_assessment(assessment_data["id"]):return "Success"else:return "Failure"@app.route("/students/read/<id>")def students_read(id):return jsonify(get_students(id))@app.route("/students/read")def all_students_read():student_table = dynamodb.Table("Students")items = student_table.scan()['Items']return jsonify(items)@app.route("/assessment/read/<id>")def assessment_read(id):return jsonify(get_assessment(id))@app.route("/assessment/submit/<id>", methods=["POST"])def submit_assessment(id):assessments_table = dynamodb.Table("Assessments")assessment = assessments_table.get_item(Key={"id": id})if not assessment.get("Item"):return {"error": "id does not exist", "section": id}responses = {question["id"]: question["response"]for question in request.json.get("questions")}correct_answers = 0for response in responses:# print(# (# responses[response],# find_question(assessment.get("Item").get("questions"), response).get(# "correctAnswer"# ),# )# )if responses[response] == find_question(assessment.get("Item").get("questions"), response).get("correctAnswer"):correct_answers += 1score = correct_answers / len(request.json.get("questions"))users_table = dynamodb.Table("Students")users_table.update_item(Key={"uuid": request.json.get("student_id")},UpdateExpression="SET completedAssessments = list_append(completedAssessments, :i)",ExpressionAttributeValues={":i": [{"id": id,"score": round(score * 100),}]},)message = Noneif round(score * 100) > 70:message = f"Congratulations! You passed your assessment with a {round(score * 100)}%."else:message = f"You failed your assessment with a {round(score * 100)}%."sns = boto3.client("sns", region_name="us-east-1")number = "+15125967383"sns.publish(PhoneNumber=number, Message=message)return {"score": score, "message": message}def find_question(all, id):#print("id to find: ", id)for question in all:if question["id"] == id:#print(question)return questiondef get_assessment(id):assessment_table = dynamodb.Table("Assessments")results = assessment_table.get_item(Key={"id": id})if results.get("Item") is None:return {"error": "id does not exist", "section": id}else:quiz = results.get("Item")return {"title": quiz.get("title"),"id": quiz.get("id"),"questions": [{"id": question.get("id"),"title": question.get("title"),"options": random_answers(question.get("incorrectAnswers")+ [question.get("correctAnswer")]),}for question in quiz.get("questions")],}def get_students(id):students_table = dynamodb.Table('Students')results = students_table.get_item(Key = {"uuid": id})if(results.get("Item") is None):return {'error': 'id does not exist', 'section': id}else:student = results.get("Item")return studentdef lesson_plans_read():student_table = dynamodb.Table("Lesson_Plans")items = student_table.scan()['Items']return jsonify(items)def random_answers(answers):shuffle(answers)return answers@app.route("/recommendations/<uuid>")def get_recommendation(uuid):student_info_table = dynamodb.Table('Students')lesson_plans_table = dynamodb.Table('Lesson_Plans')student = get_students(uuid)tek = student.get("struggleTeks")[0]lesson_plans = lesson_plans_table.scan( Select='ALL_ATTRIBUTES', FilterExpression='tek = :s', ExpressionAttributeValues={ ":s": tek })#print(lesson_plans)return jsonify({"student": student, "lesson_plans": lesson_plans.get("Items")})if __name__ == "__main__":app.run(host="0.0.0.0", debug=True)
"""Assignment 6The goal is to make a graph ofwho bit who and who was bitten.There should be 10 nodes and 15 edges.3 arrows of biting each other and3 arrows of someone biting themselves.Networkx can not do self bitingarrows, but it is in the code."""from graphviz import Digraph as DDotGraphfrom graphviz import Graph as UDotGraphimport networkx as nxfrom networkx.algorithms.dag import transitive_closureimport graphviz as gvimport matplotlib.pyplot as pltimport numpy as npfrom numpy.linalg import matrix_power"""class DGraph:def __init__(self):self.d = dict()def clear(self):self.d = dict()def add_node(self,n):if not self.d.get(n):self.d[n] = set()def add_edge(self,e):f,t=eself.add_node(f)self.add_node(t)vs=self.d.get(f)if not vs:self.d[f] = {t}else:vs.add(t)def add_edges_from(self,es):for e in es:self.add_edge(e)def edges(self):for f in self.d:for t in self.d[f]:yield (f,t)def number_of_nodes(self):return len(self.d)def __repr__(self):return self.d.__repr__()def show(self):dot = gv.Digraph()for e in self.edges():#print(e)f, t = edot.edge(str(f), str(t), label='')#print(dot.source)show(dot)# displays graph with graphvizdef show(dot, show=True, file_name='graph.gv'):dot.render(file_name, view=show)def showGraph(g,label="",directed=True):if directed:dot = gv.Digraph()else:dot = gv.Graph()for e in g.edges():print(e)f, t = edot.edge(str(f), str(t), label=label)print(dot.source)show(dot)def bit():G = DGraph()G.add_edge(("Blade","Samara"))G.add_edge(("Shadow","Wolfe"))G.add_edge(("Raven", "Austin"))G.add_edge(("Blade", "Alice"))G.add_edge(("Alice","Brandon"))G.add_edge(("Blade", "Wolfe"))G.add_edge(("Samara", "Robin"))G.add_edge(("Samara", "Raven"))G.add_edge(("Samara", "Hamed"))G.add_edge(("Wolfe", "Blade"))G.add_edge(("Hamed", "Samara"))G.add_edge(("Wolfe", "Shadow"))G.add_edge(("Brandon", "Brandon"))G.add_edge(("Hamed", "Hamed"))G.add_edge(("Austin", "Austin"))showGraph(G, label="bit")bit()def bitten():G=DGraph()G.add_edge(("Samara","Blade"))G.add_edge(("Wolfe","Shadow"))G.add_edge(("Austin", "Raven"))G.add_edge(("Alice","Blade"))G.add_edge(("Brandon", "Alice"))G.add_edge(("Wolfe", "Blade" ))G.add_edge(("Robin", "Samara"))G.add_edge(("Raven", "Samara"))G.add_edge(("Hamed", "Samara"))G.add_edge(("Blade", "Wolfe"))G.add_edge(("Samara", "Hamed"))G.add_edge(("Shadow", "Wolfe"))G.add_edge(("Brandon", "Brandon"))G.add_edge(("Hamed", "Hamed"))G.add_edge(("Austin", "Austin"))showGraph(G, label="bitten by")#bitten()family = ["Blade", "Samara", "Shadow", "Wolfe", "Raven", "Alice"]"""#Do transitive closure call out and the#matrix power operation should be the sameD = nx.DiGraph()#D.add_nodes_from("SamaraBladeWolfeShadowAliceRavenBrandonRobinHamedAustin")D.add_edge("Blade","Samara")D.add_edge("Shadow","Wolfe")D.add_edge("Raven", "Austin")D.add_edge("Blade", "Alice")D.add_edge("Alice","Brandon")D.add_edge("Blade", "Wolfe")D.add_edge("Samara", "Robin")D.add_edge("Samara", "Raven")D.add_edge("Samara", "Hamed")D.add_edge("Wolfe", "Blade")D.add_edge("Hamed", "Samara")D.add_edge("Wolfe", "Shadow")D.add_edge("Brandon", "Brandon")D.add_edge("Hamed", "Hamed")D.add_edge("Austin", "Austin")T = transitive_closure(D)for e in D.edges(): print(e)for n in D.nodes(): print(n)def show(H):nx.draw(H, with_labels=True, font_weight='bold')plt.show()#Use nx.to_numpy_matrix instead of nx.adjacency_matrix# M = nx.adjacency_matrix(D)# MT = nx.adjacency_matrix(T)M = nx.to_numpy_matrix(D)MT = nx.to_numpy_matrix(T)M2 = M@Mdef mPower(M, k): #M is numpy matrixassert k >= 1P = Mfor _ in range(k):P = P @ Mreturn Pdef tc(M):#compute transitive closurepassD1 = nx.DiGraph(M)D2 = nx.DiGraph(M2)print('Matrix for Original\n', M)N = nx.to_numpy_array(D,dtype=int)print('np_array for Original\n', N)print('\nMatrix for Transitive Closure\n', MT)N2 = nx.to_numpy_array(T,dtype=int)print('np_array for Transitive Closure\n', N2)show(D) #can use D, T, and numpy matrix power operationshow(T)show(T)
# Prompt user for base and heightbase = float(input("Enter the base of the triangle: "))height = float(input("Enter the height of the triangle: "))# Calculate the areaarea = (base * height) / 2# Display the resultprint("The area of the triangle is:", area)
#SetsU = {0,1,2,3,4,5,6,7,8,9}P = {1,2,3,4}Q = {4,5,6}R = {3,4,6,8,9}def set2bits(xs,us) :bs=[]for x in us :if x in xs :bs.append(1)else:bs.append(0)assert len(us) == len(bs)return bsdef union(set1,set2) :finalSet = set()bitList1 = set2bits(set1, U)bitList2 = set2bits(set2, U)for i in range(len(U)) :if(bitList1[i] or bitList2[i]) :finalSet.add(i)return finalSetdef intersection(set1,set2) :finalSet = set()bitList1 = set2bits(set1, U)bitList2 = set2bits(set2, U)for i in range(len(U)) :if(bitList1[i] and bitList2[i]) :finalSet.add(i)return finalSetdef compliment(set1) :finalSet = set()bitList = set2bits(set1, U)for i in range(len(U)) :if(not bitList[i]) :finalSet.add(i)return finalSetdef implication(a,b):return union(compliment(a), b)################################################################################################################# Problems 1-6 ###################################################################################################################################p \/ (q /\ r) = (p \/ q) /\ (p \/ r)def prob1():return union(P, intersection(Q,R)) == intersection(union(P,Q), union(P,R))#p /\ (q \/ r) = (p /\ q) \/ (p /\ r)def prob2():return intersection(P, union(Q,R)) == union(intersection(P,Q), intersection(P,R))#~(p /\ q) = ~p \/ ~qdef prob3():return compliment(intersection(P,R)) == union(compliment(P), compliment(R))#~(p \/ q) = ~p /\ ~qdef prob4():return compliment(union(P,Q)) == intersection(compliment(P), compliment(Q))#(p=>q) = (~q => ~p)def prob5():return implication(P,Q) == implication(compliment(Q), compliment(P))#(p => q) /\ (q => r) => (p => r)def prob6():return implication(intersection(implication(P,Q), implication(Q,R)), implication(P,R))print("Problem 1: ", prob1())print("Problem 2: ", prob2())print("Problem 3: ", prob3())print("Problem 4: ", prob4())print("Problem 5: ", prob5())print("Problem 6: ", prob6())'''Problem 1: TrueProblem 2: TrueProblem 3: TrueProblem 4: TrueProblem 5: TrueProblem 6: {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}'''
import itertoolsdef compute_permutations(string):# Generate all permutations of the stringpermutations = itertools.permutations(string)# Convert each permutation tuple to a stringpermutations = [''.join(permutation) for permutation in permutations]return permutations# Prompt the user for a stringstring = input("Enter a string: ")# Compute permutationspermutations = compute_permutations(string)# Display the permutationsprint("Permutations:")for permutation in permutations:print(permutation)
import anytree as atimport random as rm# Generate a tree with node_count many nodes. Each has a number key that shows when it was made and a randomly selected color, red or white.def random_tree(node_count):# Generates the list of nodesnodes = []for i in range(node_count):test = rm.randint(1,2)if test == 1:nodes.append(at.Node(str(i),color="white"))else:nodes.append(at.Node(str(i),color="red"))#Creates the various main branchesfor i in range(node_count):for j in range(i, len(nodes)):test = rm.randint(1,len(nodes))if test == 1 and nodes[j].parent == None and (not nodes[i] == nodes[j]):nodes[j].parent = nodes[i]#Collects all the main branches into a single tree with the first node being the rootfor i in range(1, node_count):if nodes[i].parent == None and (not nodes[i] == nodes[0]):nodes[i].parent = nodes[0]return nodes[0]