[∇] [@] Introduction à Python 3

Version 2022-10-25

Licence cc-by-sa ModLibre.info sauf autres indications

NB : Copiez les instructions que vous voulez tester dans une version récente de Python 3



[∇] [Δ] [@] Plan de l’introduction à Python 3

●      [∇] L’effet Bonaldi

●      [∇] Multiplication

●      [∇] Suite de Fibonacci

●      [∇] Tracé d’un coeur

●      [∇] Références



[∇] [Δ] [@] « L’effet Bonaldi »

#!/usr/bin/python3
# https://www.python.org/dev/peps/pep-0263/
#
# Copyright (C) 2018-2018 cc-by-sa 4.0      ModLibre.info
# Version            2018-06-03 Jean.Thiery@ModLibre.info

# Titre: Impression d'un texte

print("Hello Bonaldi !")    # fr: print = imprimer
print("      Toute démonstration d’un produit quelconque               ")
print("      qui fonctionnait parfaitement aux répétitions             ")
print("      échouera lamentablement lors de la démonstration publique.")

# L'« effet Bonaldi »
#
# L'« effet Bonaldi », ou parfois « syndrome Bonaldi »,
# est une théorie populaire associée au nom de Jérôme Bonaldi.
# Elle fait référence aux déboires que connut cet animateur
# lorsqu'il présentait des objets et inventions insolites
# à la fin de l'émission Nulle part ailleurs.
# L'effet Bonaldi est un cas particulier de la loi de Murphy.
# Il énonce que :
#
# « Toute démonstration d’un produit quelconque
#   qui fonctionnait parfaitement aux répétitions
#   échouera lamentablement lors de la démonstration publique. »
#
# https://fr.wikipedia.org/wiki/J%C3%A9r%C3%B4me_Bonaldi
Hello Bonaldi !
    Toute démonstration d’un produit quelconque
    qui fonctionnait parfaitement aux répétitions
    échouera lamentablement lors de la démonstration publique



[∇] [Δ] [@] Périmètre et surface d’un disque

# Copyright (C) 2015-2015   Creative Commons Attribution 2.5
# Version       2015-10-02  Jean.Thiery@ModLibre.info
# Titre: Contour et surface d'un disque

import math

texte   = input("Rayon du disque ? ")       # entre
rayon   = int(texte)
contour = 2 * math.pi * rayon
print("Contour = %s" % contour)             # imprime
surface = math.pi * rayon * rayon
print("Surface = %s" % surface)             # imprime
Rayon du disque ? 10
Contour = 62.8318530718
Surface = 314.159265359



[∇] [Δ] [@] Multiplication

# Copyright (C)  2007-2015   Creative Commons Attribution 2.5
#                            http://wiki.laptop.org/go/Pippy
# Initial version            Chris Ball
# Version        2015-10-01  Jean.Thiery@ModLibre.info
#
# Title:  Times2 -> Multiplie
# Author: Chris Ball
# About:  Print any times table
# Shows:  Loops, range, and input
# XOversion: Bundled in 656

texte  = input("Quelle table de multiplication ? ")     # entre
nombre = int(eval(texte))
for i in range(1,10):                       # dans l'intervalle [1,10[
    print(nombre, "x", i, "=", i*nombre)    # imprime
7 x 1 = 7
7 x 2 = 14
7 x 3 = 21
7 x ......



[∇] [Δ] [@] Suite de Fibonacci

# Copyright (C) 2007-2015   Creative Commons Attribution 2.5
#                           http://wiki.laptop.org/go/Pippy
# Initial version           Rafael Ortiz </go/User:RafaelOrtiz>
# Version       2015-10-01  Jean.Thiery@ModLibre.info

# Title:  Fibonacci Series
# Author: Rafael Ortiz </go/User:RafaelOrtiz>
# About:  The Fibonacci Number Series
# en:     http://en.wikipedia.org/wiki/Fibonacci_number
# fr:     http://fr.wikipedia.org/wiki/Suite_de_Fibonacci
# Shows:  Using tuple assignments. While loop. 
# XO version

a, b = 1, 1
while b < 10000:                # tant que
     print(a)                   # imprime
     a, b = b, a+b

# Variations
# a, b = 1, -1
#    a, b = b, a-b              # suite de Fibonacci alternée
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181



[∇] [Δ] [@] Tracé d’un coeur

# Copyright (C) 2015-2015   GPL v3 [https://www.gnu.org/licenses/gpl.html]
# Version       2015-10-30  Jean.Thiery@ModLibre.info

# coeur.py :                Tracé d'un coeur     

from math import *; from turtle import *

texte = input("Longueur de la pointe [100] ? ")
if texte == "" : texte = "100"
taille = eval(texte)

texte = input("Angle de la pointe [15 (60) 90] ? ")
if texte == "" : texte = "60"
angle = eval(texte)
rayon = taille / sin(pi*angle/180)

clearscreen()                       # Efface l'écran
shape("circle")                     # Plume sous forme de cercle
shapesize(0.01, 0.1, 0)             # Plume très fine
penup()                             # Plume haute
setpos( 0, -taille)                 # Position initiale

pencolor(1, 0, 0)                   # Couleur de plume (rouge, vert, bleu) 
pendown()                           # Plume basse
fillcolor(1, 0, 0)                  # Couleur de remplissage (rouge, vert, bleu)
begin_fill()                        # Début de remplissage

setheading(90)                      # Direction vers le haut
circle(rayon,  angle)               # Coté gauche de la pointe
setheading(heading()+180)           # On continue tout droit
circle(rayon, -angle)               # Coté gauche du coeur

x, y = position()                   # Position de la plume      
circle(abs(x)/2, -180)              # Sommet gauche du coeur
setheading(-90)                     # Direction vers le bas
circle(abs(x)/2, -180)              # Sommet droit du coeur

circle(rayon, -angle)               # Coté droit du coeur
setheading(heading()+180)           # On continue tout droit
circle(rayon,  angle)               # Coté droit de la pointe

end_fill()                          # Fin de remplissage
penup()                             # Plume haute

exitonclick()                       # Sort du mode graphique

# VARIATIONS : Changer le signe de l'angle d'un cercle
#
# circle(abs(x)/2, -180) -> circle(abs(x)/2,180)  # Sommet droit du coeur
# ou
# circle(rayon, -angle)  -> circle(rayon, angle)  # Coté gauche du coeur
#
# VARIATIONS : Changer les couleurs
#
# fillcolor(0, 0, 0)    # black     = noir
# fillcolor(1, 0, 0)    # red       = rouge
# fillcolor(0, 1, 0)    # green     = vert
# fillcolor(0, 0, 1)    # blue      = bleu
# fillcolor(1, 1, 0)    # yellow    = jaune
# fillcolor(0, 1, 1)    # cyan      = cyan
# fillcolor(1, 0, 1)    # magenta   = magenta
# fillcolor(1, 1, 1)    # white     = blanc
#
# REFERENCES
#
# Module turtle
# https://docs.python.org/2/library/turtle.html
#
# Dessins de coeurs
# http://serge.mehl.free.fr/anx/coeur.html
# http://heraldie.blogspot.fr/2012/10/le-cur-heraldique-et-geometrie.html



[∇] [Δ] [@] Modèle d’épidémie programmé en Python

# © Copyright 2018...       Jared GERSCHLER http://jaredgerschler.blog/ 
# Acknowledgements          Jared GERSCHLER http://jaredgerschler.blog/ 

import numpy as np
from scipy.integrate import odeint
import matplotlib.pyplot as plt

# total population
N = 5000
# initial infected
I0 = 6
# initial recovered
R0 = 0
#initial susceptible
S0 = N - I0 - R0

# contact rate
beta = 0.3
# mean recovery rate
gamma = 0.1

# initial conditions vector
y0 = S0, I0, R0
# 200 evenly spaced values (representing days)
t = np.linspace(0, 200, 200)

def func(y, t, N, beta, gamma):
    # S, I, R values assigned from vector
    S, I, R = y
    # differential equations
    dSdt = -beta * S * I / N
    dIdt = beta * S * I / N - gamma * I
    dRdt = gamma * I
    return dSdt, dIdt, dRdt

# Integrate the diff eqs over the time array
values = odeint(func, y0, t, args=(N, beta, gamma))
# assign S, I, R values from values transpose
S, I, R = values.T

fig = plt.figure()
ax = fig.add_subplot(111, axisbelow=True)
ax.plot(t, S, 'black', lw=1.5, label='Susceptible')
ax.plot(t, I, 'orange', lw=1.5, label='Infected')
ax.plot(t, R, 'blue', lw=1.5, label='Recovered')
ax.set_xlabel('Time (days)')
ax.set_ylabel('Number of People')
ax.set_ylim(0,5100)
ax.set_xlim(0,200)
ax.grid(b=True, which='major', c='#bbbbbb', lw=1, ls='-')
legend = ax.legend()
legend.get_frame().set_alpha(0.5)
plt.show()

Merci à Jared GERSCHLER pour ce programme écrit en Python.



[∇] [Δ] [@] Références



[@] [Δ] Fin