algo et data science
This commit is contained in:
1
algo/algofundoc/src/__init__.py
Normal file
1
algo/algofundoc/src/__init__.py
Normal file
@ -0,0 +1 @@
|
||||
|
10
algo/algofundoc/src/assignment.py
Normal file
10
algo/algofundoc/src/assignment.py
Normal file
@ -0,0 +1,10 @@
|
||||
"""declare a variable add 5 to it and print its value"""
|
||||
|
||||
x = 4
|
||||
# add 5 to this variable
|
||||
x = x + 5
|
||||
print(x)
|
||||
# 9
|
||||
|
||||
|
||||
|
BIN
algo/algofundoc/src/data/ball.gif
Normal file
BIN
algo/algofundoc/src/data/ball.gif
Normal file
Binary file not shown.
After Width: | Height: | Size: 4.9 KiB |
151
algo/algofundoc/src/data/iris.data
Normal file
151
algo/algofundoc/src/data/iris.data
Normal file
@ -0,0 +1,151 @@
|
||||
5.1,3.5,1.4,0.2,Iris-setosa
|
||||
4.9,3.0,1.4,0.2,Iris-setosa
|
||||
4.7,3.2,1.3,0.2,Iris-setosa
|
||||
4.6,3.1,1.5,0.2,Iris-setosa
|
||||
5.0,3.6,1.4,0.2,Iris-setosa
|
||||
5.4,3.9,1.7,0.4,Iris-setosa
|
||||
4.6,3.4,1.4,0.3,Iris-setosa
|
||||
5.0,3.4,1.5,0.2,Iris-setosa
|
||||
4.4,2.9,1.4,0.2,Iris-setosa
|
||||
4.9,3.1,1.5,0.1,Iris-setosa
|
||||
5.4,3.7,1.5,0.2,Iris-setosa
|
||||
4.8,3.4,1.6,0.2,Iris-setosa
|
||||
4.8,3.0,1.4,0.1,Iris-setosa
|
||||
4.3,3.0,1.1,0.1,Iris-setosa
|
||||
5.8,4.0,1.2,0.2,Iris-setosa
|
||||
5.7,4.4,1.5,0.4,Iris-setosa
|
||||
5.4,3.9,1.3,0.4,Iris-setosa
|
||||
5.1,3.5,1.4,0.3,Iris-setosa
|
||||
5.7,3.8,1.7,0.3,Iris-setosa
|
||||
5.1,3.8,1.5,0.3,Iris-setosa
|
||||
5.4,3.4,1.7,0.2,Iris-setosa
|
||||
5.1,3.7,1.5,0.4,Iris-setosa
|
||||
4.6,3.6,1.0,0.2,Iris-setosa
|
||||
5.1,3.3,1.7,0.5,Iris-setosa
|
||||
4.8,3.4,1.9,0.2,Iris-setosa
|
||||
5.0,3.0,1.6,0.2,Iris-setosa
|
||||
5.0,3.4,1.6,0.4,Iris-setosa
|
||||
5.2,3.5,1.5,0.2,Iris-setosa
|
||||
5.2,3.4,1.4,0.2,Iris-setosa
|
||||
4.7,3.2,1.6,0.2,Iris-setosa
|
||||
4.8,3.1,1.6,0.2,Iris-setosa
|
||||
5.4,3.4,1.5,0.4,Iris-setosa
|
||||
5.2,4.1,1.5,0.1,Iris-setosa
|
||||
5.5,4.2,1.4,0.2,Iris-setosa
|
||||
4.9,3.1,1.5,0.1,Iris-setosa
|
||||
5.0,3.2,1.2,0.2,Iris-setosa
|
||||
5.5,3.5,1.3,0.2,Iris-setosa
|
||||
4.9,3.1,1.5,0.1,Iris-setosa
|
||||
4.4,3.0,1.3,0.2,Iris-setosa
|
||||
5.1,3.4,1.5,0.2,Iris-setosa
|
||||
5.0,3.5,1.3,0.3,Iris-setosa
|
||||
4.5,2.3,1.3,0.3,Iris-setosa
|
||||
4.4,3.2,1.3,0.2,Iris-setosa
|
||||
5.0,3.5,1.6,0.6,Iris-setosa
|
||||
5.1,3.8,1.9,0.4,Iris-setosa
|
||||
4.8,3.0,1.4,0.3,Iris-setosa
|
||||
5.1,3.8,1.6,0.2,Iris-setosa
|
||||
4.6,3.2,1.4,0.2,Iris-setosa
|
||||
5.3,3.7,1.5,0.2,Iris-setosa
|
||||
5.0,3.3,1.4,0.2,Iris-setosa
|
||||
7.0,3.2,4.7,1.4,Iris-versicolor
|
||||
6.4,3.2,4.5,1.5,Iris-versicolor
|
||||
6.9,3.1,4.9,1.5,Iris-versicolor
|
||||
5.5,2.3,4.0,1.3,Iris-versicolor
|
||||
6.5,2.8,4.6,1.5,Iris-versicolor
|
||||
5.7,2.8,4.5,1.3,Iris-versicolor
|
||||
6.3,3.3,4.7,1.6,Iris-versicolor
|
||||
4.9,2.4,3.3,1.0,Iris-versicolor
|
||||
6.6,2.9,4.6,1.3,Iris-versicolor
|
||||
5.2,2.7,3.9,1.4,Iris-versicolor
|
||||
5.0,2.0,3.5,1.0,Iris-versicolor
|
||||
5.9,3.0,4.2,1.5,Iris-versicolor
|
||||
6.0,2.2,4.0,1.0,Iris-versicolor
|
||||
6.1,2.9,4.7,1.4,Iris-versicolor
|
||||
5.6,2.9,3.6,1.3,Iris-versicolor
|
||||
6.7,3.1,4.4,1.4,Iris-versicolor
|
||||
5.6,3.0,4.5,1.5,Iris-versicolor
|
||||
5.8,2.7,4.1,1.0,Iris-versicolor
|
||||
6.2,2.2,4.5,1.5,Iris-versicolor
|
||||
5.6,2.5,3.9,1.1,Iris-versicolor
|
||||
5.9,3.2,4.8,1.8,Iris-versicolor
|
||||
6.1,2.8,4.0,1.3,Iris-versicolor
|
||||
6.3,2.5,4.9,1.5,Iris-versicolor
|
||||
6.1,2.8,4.7,1.2,Iris-versicolor
|
||||
6.4,2.9,4.3,1.3,Iris-versicolor
|
||||
6.6,3.0,4.4,1.4,Iris-versicolor
|
||||
6.8,2.8,4.8,1.4,Iris-versicolor
|
||||
6.7,3.0,5.0,1.7,Iris-versicolor
|
||||
6.0,2.9,4.5,1.5,Iris-versicolor
|
||||
5.7,2.6,3.5,1.0,Iris-versicolor
|
||||
5.5,2.4,3.8,1.1,Iris-versicolor
|
||||
5.5,2.4,3.7,1.0,Iris-versicolor
|
||||
5.8,2.7,3.9,1.2,Iris-versicolor
|
||||
6.0,2.7,5.1,1.6,Iris-versicolor
|
||||
5.4,3.0,4.5,1.5,Iris-versicolor
|
||||
6.0,3.4,4.5,1.6,Iris-versicolor
|
||||
6.7,3.1,4.7,1.5,Iris-versicolor
|
||||
6.3,2.3,4.4,1.3,Iris-versicolor
|
||||
5.6,3.0,4.1,1.3,Iris-versicolor
|
||||
5.5,2.5,4.0,1.3,Iris-versicolor
|
||||
5.5,2.6,4.4,1.2,Iris-versicolor
|
||||
6.1,3.0,4.6,1.4,Iris-versicolor
|
||||
5.8,2.6,4.0,1.2,Iris-versicolor
|
||||
5.0,2.3,3.3,1.0,Iris-versicolor
|
||||
5.6,2.7,4.2,1.3,Iris-versicolor
|
||||
5.7,3.0,4.2,1.2,Iris-versicolor
|
||||
5.7,2.9,4.2,1.3,Iris-versicolor
|
||||
6.2,2.9,4.3,1.3,Iris-versicolor
|
||||
5.1,2.5,3.0,1.1,Iris-versicolor
|
||||
5.7,2.8,4.1,1.3,Iris-versicolor
|
||||
6.3,3.3,6.0,2.5,Iris-virginica
|
||||
5.8,2.7,5.1,1.9,Iris-virginica
|
||||
7.1,3.0,5.9,2.1,Iris-virginica
|
||||
6.3,2.9,5.6,1.8,Iris-virginica
|
||||
6.5,3.0,5.8,2.2,Iris-virginica
|
||||
7.6,3.0,6.6,2.1,Iris-virginica
|
||||
4.9,2.5,4.5,1.7,Iris-virginica
|
||||
7.3,2.9,6.3,1.8,Iris-virginica
|
||||
6.7,2.5,5.8,1.8,Iris-virginica
|
||||
7.2,3.6,6.1,2.5,Iris-virginica
|
||||
6.5,3.2,5.1,2.0,Iris-virginica
|
||||
6.4,2.7,5.3,1.9,Iris-virginica
|
||||
6.8,3.0,5.5,2.1,Iris-virginica
|
||||
5.7,2.5,5.0,2.0,Iris-virginica
|
||||
5.8,2.8,5.1,2.4,Iris-virginica
|
||||
6.4,3.2,5.3,2.3,Iris-virginica
|
||||
6.5,3.0,5.5,1.8,Iris-virginica
|
||||
7.7,3.8,6.7,2.2,Iris-virginica
|
||||
7.7,2.6,6.9,2.3,Iris-virginica
|
||||
6.0,2.2,5.0,1.5,Iris-virginica
|
||||
6.9,3.2,5.7,2.3,Iris-virginica
|
||||
5.6,2.8,4.9,2.0,Iris-virginica
|
||||
7.7,2.8,6.7,2.0,Iris-virginica
|
||||
6.3,2.7,4.9,1.8,Iris-virginica
|
||||
6.7,3.3,5.7,2.1,Iris-virginica
|
||||
7.2,3.2,6.0,1.8,Iris-virginica
|
||||
6.2,2.8,4.8,1.8,Iris-virginica
|
||||
6.1,3.0,4.9,1.8,Iris-virginica
|
||||
6.4,2.8,5.6,2.1,Iris-virginica
|
||||
7.2,3.0,5.8,1.6,Iris-virginica
|
||||
7.4,2.8,6.1,1.9,Iris-virginica
|
||||
7.9,3.8,6.4,2.0,Iris-virginica
|
||||
6.4,2.8,5.6,2.2,Iris-virginica
|
||||
6.3,2.8,5.1,1.5,Iris-virginica
|
||||
6.1,2.6,5.6,1.4,Iris-virginica
|
||||
7.7,3.0,6.1,2.3,Iris-virginica
|
||||
6.3,3.4,5.6,2.4,Iris-virginica
|
||||
6.4,3.1,5.5,1.8,Iris-virginica
|
||||
6.0,3.0,4.8,1.8,Iris-virginica
|
||||
6.9,3.1,5.4,2.1,Iris-virginica
|
||||
6.7,3.1,5.6,2.4,Iris-virginica
|
||||
6.9,3.1,5.1,2.3,Iris-virginica
|
||||
5.8,2.7,5.1,1.9,Iris-virginica
|
||||
6.8,3.2,5.9,2.3,Iris-virginica
|
||||
6.7,3.3,5.7,2.5,Iris-virginica
|
||||
6.7,3.0,5.2,2.3,Iris-virginica
|
||||
6.3,2.5,5.0,1.9,Iris-virginica
|
||||
6.5,3.0,5.2,2.0,Iris-virginica
|
||||
6.2,3.4,5.4,2.3,Iris-virginica
|
||||
5.9,3.0,5.1,1.8,Iris-virginica
|
||||
|
52
algo/algofundoc/src/dicttype.py
Normal file
52
algo/algofundoc/src/dicttype.py
Normal file
@ -0,0 +1,52 @@
|
||||
# # The get() method on dicts
|
||||
# # and its "default" argument
|
||||
#
|
||||
# name_for_userid = {
|
||||
# 382: "Alice",
|
||||
# 590: "Bob",
|
||||
# 951: "Dilbert",
|
||||
# }
|
||||
#
|
||||
# def greeting(userid):
|
||||
# return "Hi %s!" % name_for_userid.get(userid, "there")
|
||||
#
|
||||
# greeting(382)
|
||||
# # "Hi Alice!"
|
||||
#
|
||||
# greeting(333333)
|
||||
# #"Hi there!"
|
||||
#
|
||||
# # ___________________________________________________________________
|
||||
#
|
||||
# # How to sort a Python dict by value
|
||||
# # (== get a representation sorted by value)
|
||||
#
|
||||
# xs = {'a': 4, 'b': 3, 'c': 2, 'd': 1}
|
||||
#
|
||||
# sorted(xs.items(), key=lambda x: x[1])
|
||||
# [('d', 1), ('c', 2), ('b', 3), ('a', 4)]
|
||||
#
|
||||
# # Or:
|
||||
#
|
||||
# import operator
|
||||
# sorted(xs.items(), key=operator.itemgetter(1))
|
||||
# [('d', 1), ('c', 2), ('b', 3), ('a', 4)]
|
||||
#
|
||||
# # ___________________________________________________________________
|
||||
#
|
||||
# # How to merge two dictionaries
|
||||
# # in Python 3.5+
|
||||
#
|
||||
# x = {'a': 1, 'b': 2}
|
||||
# y = {'b': 3, 'c': 4}
|
||||
#
|
||||
# z = {**x, **y}
|
||||
#
|
||||
# z
|
||||
# #{'c': 4, 'a': 1, 'b': 3}
|
||||
#
|
||||
# # In Python 2.x you could
|
||||
# # use this:
|
||||
# z = dict(x, **y)
|
||||
# z
|
||||
# #{'a': 1, 'c': 4, 'b': 3}
|
18
algo/algofundoc/src/duration.py
Normal file
18
algo/algofundoc/src/duration.py
Normal file
@ -0,0 +1,18 @@
|
||||
"""The "timeit" module lets you measure the execution
|
||||
time of small bits of Python code"""
|
||||
|
||||
import timeit
|
||||
timeit.timeit('"-".join(str(n) for n in range(100))',
|
||||
number=10000)
|
||||
|
||||
# 0.3412662749997253
|
||||
|
||||
timeit.timeit('"-".join([str(n) for n in range(100)])',
|
||||
number=10000)
|
||||
|
||||
# 0.2996307989997149
|
||||
|
||||
timeit.timeit('"-".join(map(str, range(100)))',
|
||||
number=10000)
|
||||
|
||||
# 0.24581470699922647
|
25
algo/algofundoc/src/hellopygame.py
Normal file
25
algo/algofundoc/src/hellopygame.py
Normal file
@ -0,0 +1,25 @@
|
||||
import sys, pygame
|
||||
pygame.init()
|
||||
|
||||
size = width, height = 620, 840
|
||||
speed = [2, 2]
|
||||
black = 0, 0, 0
|
||||
|
||||
screen = pygame.display.set_mode(size)
|
||||
|
||||
ball = pygame.image.load("data/ball.gif")
|
||||
ballrect = ball.get_rect()
|
||||
|
||||
while 1:
|
||||
for event in pygame.event.get():
|
||||
if event.type == pygame.QUIT: sys.exit()
|
||||
|
||||
ballrect = ballrect.move(speed)
|
||||
if ballrect.left < 0 or ballrect.right > width:
|
||||
speed[0] = -speed[0]
|
||||
if ballrect.top < 0 or ballrect.bottom > height:
|
||||
speed[1] = -speed[1]
|
||||
|
||||
screen.fill(black)
|
||||
screen.blit(ball, ballrect)
|
||||
pygame.display.flip()
|
35
algo/algofundoc/src/json_reader.py
Normal file
35
algo/algofundoc/src/json_reader.py
Normal file
@ -0,0 +1,35 @@
|
||||
"""Fetches json data and prints it nicely with pprint
|
||||
"""
|
||||
|
||||
from sys import exit
|
||||
from pprint import pprint
|
||||
from json import loads
|
||||
from urllib.request import urlopen
|
||||
from urllib.error import HTTPError
|
||||
|
||||
json_url = "http://webservices-v2.crous-mobile.fr:8080/feed/dijon/externe/crous-dijon.min.jsonsdf"
|
||||
|
||||
def retrieve_json(json_url):
|
||||
"""
|
||||
Retrieves and pretty prints indented json from a given url
|
||||
|
||||
:param str json_url: full url of the json file
|
||||
:return: None
|
||||
:rtype: str
|
||||
:raises IOError: if the json cannot be retrieved
|
||||
"""
|
||||
try:
|
||||
with urlopen(json_url) as resp:
|
||||
contents = resp.read().decode()
|
||||
pprint(loads(contents))
|
||||
except HTTPError as e:
|
||||
raise e
|
||||
except:
|
||||
raise IOError("The json {0} cannot be retrieved".format(json_url))
|
||||
|
||||
if __name__ == "__main__":
|
||||
try:
|
||||
retrieve_json(json_url)
|
||||
except Exception as e:
|
||||
print(e)
|
||||
exit(1)
|
16
algo/algofundoc/src/jsonprint.py
Normal file
16
algo/algofundoc/src/jsonprint.py
Normal file
@ -0,0 +1,16 @@
|
||||
# The standard string repr for dicts is hard to read:
|
||||
my_mapping = {'a': 23, 'b': 42, 'c': 0xc0ffee}
|
||||
|
||||
# The "json" module can do a much better job:
|
||||
import json
|
||||
print(json.dumps(my_mapping, indent=4, sort_keys=True))
|
||||
{
|
||||
"a": 23,
|
||||
"b": 42,
|
||||
"c": 12648430
|
||||
}
|
||||
|
||||
# Note this only works with dicts containing
|
||||
# primitive types (check out the "pprint" module):
|
||||
#json.dumps({all: 'yup'})
|
||||
#TypeError: keys must be a string
|
42
algo/algofundoc/src/machinelearning.py
Normal file
42
algo/algofundoc/src/machinelearning.py
Normal file
@ -0,0 +1,42 @@
|
||||
import pandas
|
||||
from pandas.plotting import scatter_matrix
|
||||
import matplotlib.pyplot as plt
|
||||
from sklearn import model_selection
|
||||
from sklearn.metrics import classification_report
|
||||
from sklearn.metrics import confusion_matrix
|
||||
from sklearn.metrics import accuracy_score
|
||||
from sklearn.linear_model import LogisticRegression
|
||||
from sklearn.tree import DecisionTreeClassifier
|
||||
from sklearn.neighbors import KNeighborsClassifier
|
||||
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
|
||||
from sklearn.naive_bayes import GaussianNB
|
||||
from sklearn.svm import SVC
|
||||
|
||||
# Load dataset
|
||||
#url = "https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data"
|
||||
names = ['sepal-length', 'sepal-width', 'petal-length', 'petal-width', 'class']
|
||||
#dataset = pandas.read_csv(url, names=names)
|
||||
dataset = pandas.read_csv("./data/iris.data", names=names)
|
||||
|
||||
print("shape")
|
||||
print(dataset.shape)
|
||||
|
||||
print("head")
|
||||
# head
|
||||
print(dataset.head(20))
|
||||
|
||||
print("descriptions")
|
||||
print(dataset.describe())
|
||||
|
||||
# class distribution
|
||||
print(dataset.groupby('class').size())
|
||||
|
||||
|
||||
# box and whisker plots
|
||||
dataset.plot(kind='box', subplots=True, layout=(2,2), sharex=False, sharey=False)
|
||||
plt.show()
|
||||
|
||||
|
||||
# scatter plot matrix
|
||||
scatter_matrix(dataset)
|
||||
plt.show()
|
20
algo/algofundoc/src/namedtuple.py
Normal file
20
algo/algofundoc/src/namedtuple.py
Normal file
@ -0,0 +1,20 @@
|
||||
# Why Python is Great: Namedtuples
|
||||
# Using namedtuple is way shorter than
|
||||
# defining a class manually:
|
||||
from collections import namedtuple
|
||||
Car = namedtuple('Car', 'color mileage')
|
||||
|
||||
# Our new "Car" class works as expected:
|
||||
my_car = Car('red', 3812.4)
|
||||
my_car.color
|
||||
#'red'
|
||||
my_car.mileage
|
||||
#3812.4
|
||||
|
||||
# We get a nice string repr for free:
|
||||
my_car
|
||||
#Car(color='red' , mileage=3812.4)
|
||||
|
||||
# Like tuples, namedtuples are immutable:
|
||||
#my_car.color = 'blue'
|
||||
#AttributeError: "can't set attribute"
|
65
algo/algofundoc/src/pygame.py
Normal file
65
algo/algofundoc/src/pygame.py
Normal file
@ -0,0 +1,65 @@
|
||||
import pygame, sys
|
||||
from pygame.locals import *
|
||||
|
||||
# Set up pygame.
|
||||
pygame.init()
|
||||
|
||||
# Set up the window.
|
||||
windowSurface = pygame.display.set_mode((500, 400), 0, 32)
|
||||
pygame.display.set_caption('Hello world!')
|
||||
|
||||
# Set up the colors.
|
||||
BLACK = (0, 0, 0)
|
||||
WHITE = (255, 255, 255)
|
||||
RED = (255, 0, 0)
|
||||
GREEN = (0, 255, 0)
|
||||
BLUE = (0, 0, 255)
|
||||
|
||||
# Set up the fonts.
|
||||
basicFont = pygame.font.SysFont(None, 48)
|
||||
|
||||
# Set up the text.
|
||||
text = basicFont.render('Hello world!', True, WHITE, BLUE)
|
||||
textRect = text.get_rect()
|
||||
textRect.centerx = windowSurface.get_rect().centerx
|
||||
textRect.centery = windowSurface.get_rect().centery
|
||||
|
||||
# Draw the white background onto the surface.
|
||||
windowSurface.fill(WHITE)
|
||||
|
||||
# Draw a green polygon onto the surface.
|
||||
pygame.draw.polygon(windowSurface, GREEN, ((146, 0), (291, 106),
|
||||
(236, 277), (56, 277), (0, 106)))
|
||||
|
||||
# Draw some blue lines onto the surface.
|
||||
pygame.draw.line(windowSurface, BLUE, (60, 60), (120, 60), 4)
|
||||
pygame.draw.line(windowSurface, BLUE, (120, 60), (60, 120))
|
||||
pygame.draw.line(windowSurface, BLUE, (60, 120), (120, 120), 4)
|
||||
|
||||
# Draw a blue circle onto the surface.
|
||||
pygame.draw.circle(windowSurface, BLUE, (300, 50), 20, 0)
|
||||
|
||||
# Draw a red ellipse onto the surface.
|
||||
pygame.draw.ellipse(windowSurface, RED, (300, 250, 40, 80), 1)
|
||||
|
||||
# Draw the text's background rectangle onto the surface.
|
||||
pygame.draw.rect(windowSurface, RED, (textRect.left - 20,
|
||||
textRect.top - 20, textRect.width + 40, textRect.height + 40))
|
||||
|
||||
# Get a pixel array of the surface.
|
||||
pixArray = pygame.PixelArray(windowSurface)
|
||||
pixArray[480][380] = BLACK
|
||||
del pixArray
|
||||
|
||||
# Draw the text onto the surface.
|
||||
windowSurface.blit(text, textRect)
|
||||
|
||||
# Draw the window onto the screen.
|
||||
pygame.display.update()
|
||||
|
||||
# Run the game loop.
|
||||
while True:
|
||||
for event in pygame.event.get():
|
||||
if event.type == QUIT:
|
||||
pygame.quit()
|
||||
sys.exit()
|
22
algo/algofundoc/src/reference.py
Normal file
22
algo/algofundoc/src/reference.py
Normal file
@ -0,0 +1,22 @@
|
||||
# "is" vs "=="
|
||||
|
||||
>>> a = [1, 2, 3]
|
||||
>>> b = a
|
||||
|
||||
>>> a is b
|
||||
True
|
||||
>>> a == b
|
||||
True
|
||||
|
||||
>>> c = list(a)
|
||||
|
||||
>>> a == c
|
||||
True
|
||||
>>> a is c
|
||||
False
|
||||
|
||||
# • "is" expressions evaluate to True if two
|
||||
# variables point to the same object
|
||||
|
||||
# • "==" evaluates to True if the objects
|
||||
# referred to by the variables are equal
|
12
algo/algofundoc/src/script.py
Normal file
12
algo/algofundoc/src/script.py
Normal file
@ -0,0 +1,12 @@
|
||||
"""This is an example script."""
|
||||
import sys
|
||||
|
||||
def greet(name):
|
||||
"""Return greeting."""
|
||||
return "Hello {}!".format(name)
|
||||
|
||||
if __name__ == "__main__":
|
||||
name = sys.argv[1]
|
||||
print(greet(name))
|
||||
|
||||
|
19
algo/algofundoc/src/server.py
Executable file
19
algo/algofundoc/src/server.py
Executable file
@ -0,0 +1,19 @@
|
||||
#!/usr/bin/env python
|
||||
# coding: utf-8
|
||||
|
||||
from flask import Flask, request
|
||||
import json
|
||||
|
||||
app = Flask(__name__, static_url_path='')
|
||||
|
||||
@app.route('/', methods=['GET'])
|
||||
def index():
|
||||
return app.send_static_file('index.html')
|
||||
|
||||
@app.route('/inscription', methods=['POST'])
|
||||
def inscription():
|
||||
print request.data
|
||||
sortie = json.dumps({"data":"OK"})
|
||||
return sortie
|
||||
|
||||
app.run(host="0.0.0.0", debug=True, port=8080)
|
34
algo/algofundoc/src/simpledispatch.py
Normal file
34
algo/algofundoc/src/simpledispatch.py
Normal file
@ -0,0 +1,34 @@
|
||||
# Because Python has first-class functions they can
|
||||
# be used to emulate switch/case statements
|
||||
|
||||
def dispatch_if(operator, x, y):
|
||||
if operator == 'add':
|
||||
return x + y
|
||||
elif operator == 'sub':
|
||||
return x - y
|
||||
elif operator == 'mul':
|
||||
return x * y
|
||||
elif operator == 'div':
|
||||
return x / y
|
||||
else:
|
||||
return None
|
||||
|
||||
# with a dict factory
|
||||
|
||||
def dispatch_dict(operator, x, y):
|
||||
return {
|
||||
'add': lambda: x + y,
|
||||
'sub': lambda: x - y,
|
||||
'mul': lambda: x * y,
|
||||
'div': lambda: x / y,
|
||||
}.get(operator, lambda: None)()
|
||||
|
||||
|
||||
>>> dispatch_if('mul', 2, 8)
|
||||
16
|
||||
|
||||
>>> dispatch_dict('mul', 2, 8)
|
||||
16
|
||||
|
||||
>>> dispatch_if('unknown', 2, 8)
|
||||
None
|
17
algo/algofundoc/src/testflag.py
Normal file
17
algo/algofundoc/src/testflag.py
Normal file
@ -0,0 +1,17 @@
|
||||
# Different ways to test multiple
|
||||
# flags at once in Python
|
||||
x, y, z = 0, 1, 0
|
||||
|
||||
if x == 1 or y == 1 or z == 1:
|
||||
print('passed')
|
||||
|
||||
if 1 in (x, y, z):
|
||||
print('passed')
|
||||
|
||||
# These only test for truthiness:
|
||||
if x or y or z:
|
||||
print('passed')
|
||||
|
||||
if any((x, y, z)):
|
||||
print('passed')
|
||||
|
5
algo/algofundoc/src/typetype.py
Normal file
5
algo/algofundoc/src/typetype.py
Normal file
@ -0,0 +1,5 @@
|
||||
# Python 3.5+ supports 'type annotations' that can be
|
||||
# used with tools like Mypy to write statically typed Python:
|
||||
|
||||
def my_add(a: int, b: int) -> int:
|
||||
return a + b
|
16
algo/algofundoc/src/valswap.py
Normal file
16
algo/algofundoc/src/valswap.py
Normal file
@ -0,0 +1,16 @@
|
||||
# In-place value swapping
|
||||
|
||||
# Let's say we want to swap
|
||||
# the values of a and b...
|
||||
a = 23
|
||||
b = 42
|
||||
|
||||
# The "classic" way to do it
|
||||
# with a temporary variable:
|
||||
tmp = a
|
||||
a = b
|
||||
b = tmp
|
||||
|
||||
# Python also lets us
|
||||
# use this short-hand:
|
||||
a, b = b, a
|
Reference in New Issue
Block a user