Loading...
More Python Posts
""" Currency Converter----------------------------------------"""import urllib.requestimport jsondef currency_converter(currency_from, currency_to, currency_input):yql_base_url = "https://query.yahooapis.com/v1/public/yql"yql_query = 'select%20*%20from%20yahoo.finance.xchange%20where%20pair' \'%20in%20("'+currency_from+currency_to+'")'yql_query_url = yql_base_url + "?q=" + yql_query + "&format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys"try:yql_response = urllib.request.urlopen(yql_query_url)try:json_string = str(yql_response.read())json_string = json_string[2:json_string = json_string[:-1]print(json_string)yql_json = json.loads(json_string)last_rate = yql_json['query']['results']['rate']['Rate']currency_output = currency_input * float(last_rate)return currency_outputexcept (ValueError, KeyError, TypeError):print(yql_query_url)return "JSON format error"except IOError as e:print(str(e))currency_input = 1#currency codes : http://en.wikipedia.org/wiki/ISO_4217currency_from = "USD"currency_to = "TRY"rate = currency_converter(currency_from, currency_to, currency_input)print(rate)
def generate_floyds_triangle(num_rows):triangle = []number = 1for row in range(num_rows):current_row = []for _ in range(row + 1):current_row.append(number)number += 1triangle.append(current_row)return triangledef display_floyds_triangle(triangle):for row in triangle:for number in row:print(number, end=" ")print()# Prompt the user for the number of rowsnum_rows = int(input("Enter the number of rows for Floyd's Triangle: "))# Generate Floyd's Trianglefloyds_triangle = generate_floyds_triangle(num_rows)# Display Floyd's Triangledisplay_floyds_triangle(floyds_triangle)
from time import sleepdef delay(fn, ms, *args):sleep(ms / 1000)return fn(*args)delay(lambda x: print(x), 1000, 'later') # prints 'later' after one second
"""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)
#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}'''
from itertools import productV='∀'E='∃'def tt(f,n) :xss=product((0,1),repeat=n)print('function:',f.__name__)for xs in xss : print(*xs,':',int(f(*xs)))print('')# p \/ (q /\ r) = (p \/ q) /\ (p \/ r)def prob1(p,q,r) :x=p or (q and r)y= (p or q) and (p or r)return x==ytt(prob1,3)# p/\(q\/r)=(p/\q)\/(p/\r)def prob2(p,q,r) :x=p and ( q or r )y=(p and q) or (p and r)return x==ytt(prob2,3)#~(p/\q)=(~p\/~q)def prob3(p,q) :x=not (p and q)y=(not p) or (not q)return x==ytt(prob3,2)#(~(p\/q))=((~p)/\~q)def prob4(p, q):x = not(p or q)y = not p and not qreturn x == ytt(prob4, 2)#(p/\(p=>q)=>q)def prob5(p,q):x= p and ( not p or q)return not x or qtt(prob5,2)# (p=>q)=((p\/q)=q)def prob6(p,q) :x = (not p or q)y=((p or q) == q)return x==ytt(prob6,2)#((p=>q)=(p\/q))=qdef prob7(p,q):if ((not p or q)==(p or q))==q:return 1tt(prob7,2)#(p=>q)=((p/\q)=p)def prob8(p,q):if (not p or q)==((p and q)==p):return 1tt(prob8,2)#((p=>q)=(p/\q))=pdef prob9(p,q):if ((not p or q)==(p and q))==p:return '1'tt(prob9,2)#(p=>q)/\(q=>r)=>(p=>r)def prob10(p,q,r) :x = not ((not p or q) and (not q or r)) or (not p or r)return xtt(prob10, 3)# (p = q) /\ (q => r) => (p => r)#answer 1def prob11(p,q,r) :x = not((p is q) and (not q or r)) or (not p or r)return xtt(prob11, 3)#(p=q)/\(q=>r)=>(p=>r)#answer 2def prob11(p,q,r):x=(p==q) and (not q or r)y=not p or rreturn not x or ytt(prob11,3)#((p=>q)/\(q=r))=>(p=>r)def prob12(p,q,r):x=(not p or q) and ( q==r )y=not p or rreturn not x or ytt(prob12,3)#(p=>q)=>((p/\r)=>(q/\r))def prob13(p,q,r):x=not p or qy=(not(p and r) or ( q and r))return not x or ytt(prob13,3)#Question#2----------------------------------------#(p=>q)=>r=p=>(q=>r)def prob14(p,q,r):x=(not(not p or q) or r)y=(not p or (not q or r))return x==ytt(prob14,3)def prob15(p, q):x = not(p and q)y = not p and not qreturn x == ytt(prob15, 2)def prob16(p, q):x = not(p or q)y = not p or not qreturn x == ytt(prob16, 2)def prob17(p):x = py = not preturn x == ytt(prob17, 1)