Mes premiers pas sur Python — acte III

Afin de pratiquer Python, j’ai trouvé quelques pages d’exercices sur w3resource. Je n’ai pas réalisé tous les exercices présentés mais plutôt une sélection d’entre eux. Dans cet article, je vais présenter mon code pour chacun d’entre eux, la solution officielle n’étant pas forcément la seule valable. Nombre de ces scripts utilisent des arguments pour être fonctionnels ; vous pouvez appeler l’aide intégrée au script en passant -h en argument. J’ai codé ces snippets avec Python 3.9.1 sur macOS.

Affichage du prénom et du nom à partir du nom et du prénom saisis :  

# Affichage du prénom et du nom à partir du nom et du prénom saisi
lname = input("Last Name:")
fname = input("First Name:")
print(fname,lname)

Calcul du PGCD de deux entiers :

# Calcul du PGCD de deux entiers
import argparse, math
parser = argparse.ArgumentParser(description='Returns the GCD of two integers.')
parser.add_argument('a', metavar='a', type=int, help='A')
parser.add_argument('b', metavar='b', type=int, help='B')
args = parser.parse_args()
print(math.gcd(args.a,args.b))

Calcul de l’aire d’un triangle :

# Calcul de l'aire d'un triangle
import argparse
parser = argparse.ArgumentParser(description='Returns the area of a given triangle.')
parser.add_argument('b', metavar='base', type=int, help='Base')
parser.add_argument('h', metavar='height', type=int, help='Height')
args = parser.parse_args()
print((args.b*args.h)/2)

Affichage des éléments de la liste 1 qui ne sont pas la liste 2 :

# Affichage des éléments de liste 1 qui ne sont pas dans liste 2
l1 = ["rouge","bleu","jaune"]
l2 = ["bleu","vert","mauve"]
for col in l1:
    if col not in l2:
        print(col)

Réalise un histogramme de 4 valeurs :

# Réalise un histogramme de 4 valeurs
import argparse
parser = argparse.ArgumentParser(description='Returns an histogram based off the values given.')
parser.add_argument('a', metavar='a', type=int, help='a')
parser.add_argument('b', metavar='b', type=int, help='b')
parser.add_argument('c', metavar='c', type=int, help='c')
parser.add_argument('d', metavar='d', type=int, help='d')
args = parser.parse_args()
i = 0
char = "x"
vars = [args.a,args.b,args.c,args.d]
for i in range(0,4):
    print(char*vars[i])

Détermine si le caractère est une voyelle ou une consonne :

# Détermine si le caractère est une voyelle ou une consonne
import argparse
parser = argparse.ArgumentParser(description='Returns whether the letter is a vowel or not.')
parser.add_argument('letter', metavar='l', type=str, help='Letter')
args = parser.parse_args()
vowel = ["a","e","i","o","u","y"]
print(args.letter in vowel)

Détermine si le nombre spécifié est pair ou impair grâce au modulo :

# Détermine si le nombre spécifié est pair ou impair
import argparse
parser = argparse.ArgumentParser(description='Returns whether the value is even or odd.')
parser.add_argument('val', metavar='v', type=int, help='Value')
args = parser.parse_args()

if(args.val%2) == 0:
    print("Even")
else:
    print("Odd")

Affiche l’extension d’un nom de fichier saisi :

# Affichage de l'extension d'un nom de fichier saisi
filename = input("File Name:")
dotstr = "."
extindex = filename.find(dotstr)
while extindex != -1:
    shortfn = filename[0:extindex]
    newnamelen = len(shortfn)
    filenamelen = len(filename)
    filename = filename[newnamelen+1:filenamelen]
    extindex = filename.find(dotstr)
print(filename)

Affiche n fois la chaîne de caractère passée en argument :

# Retour de x fois la chaîne passée en argument
import argparse
parser = argparse.ArgumentParser(description='Return a specified number of the times a given string.')
parser.add_argument('str', metavar='s', type=str, help='String')
parser.add_argument('val', metavar='v', type=int, help='Number of times to print')
args = parser.parse_args()
for args.val in range(0,args.val):
    print(args.str)

Vérifie si la valeur saisie est dans une étendue 100 de 1000 ou 2000 :

# Test si la valeur saisie est dans un range de 100 de 1000 ou 2000.
import argparse
parser = argparse.ArgumentParser(description='Test whether if value is within 100 of 1000 or 2000.')
parser.add_argument('val', metavar='v', type=int, help='Value')
args = parser.parse_args()

if (args.val >= 900 and args.val <= 1100) or (args.val >= 1900 and args.val <= 2100):
    print(True)
else:
    print(False)

Calcule les montants d’une somme avec intérêts sur n années :

# Calcul de bénéfice d'un montant avec intérêts
import argparse
parser = argparse.ArgumentParser(description='Returns an amount with interests over X years.')
parser.add_argument('money', metavar='m', type=int, help='Initial amount of money')
parser.add_argument('ip', metavar='int', type=float, help='Interest rate')
parser.add_argument('y', metavar='years', type=int, help='Number of years')
args = parser.parse_args()
i = 0
money = args.money
for i in range(0,args.y):
    money = money*(1+(args.ip/100))
    print("Year "+str(i+1)+": "+str(money))

Affiche la différence entre la valeur saisie et 17. Si la différence est supérieure à 17, celle-ci est doublée et affichée en valeur absolue :

# Retour de la différence entre la valeur saisie et 17, si >17 : différence doublée et en valeur absolue
import argparse
parser = argparse.ArgumentParser(description='Returns the difference between value and 17. If higher than 17, will return absolute double the value.')
parser.add_argument('val', metavar='v', type=int, help='Value')
args = parser.parse_args()
diff = args.val-17
if args.val>17:
    print(abs(2*diff))
else:
    print(diff)

Calcul du volume d’une sphère :

# Calcul du volume d'une sphère
import argparse
parser = argparse.ArgumentParser(description='Returns the volume of a sphere with radius r.')
parser.add_argument('rad', metavar='r', type=int, help='Sphere Radius')
args = parser.parse_args()
vol = (4*3.14*(args.rad**3))/3
print(vol)

Calcule et retourne le delta en jours entre une date donnée en argument et la date du jour :

# Calcul d'un delta entre une date donnée et la date du jour
import datetime
import argparse
parser = argparse.ArgumentParser(description='Shows the delta between a date and today.')
parser.add_argument('yr', metavar='y', type=int, help='Year')
parser.add_argument('mo', metavar='m', type=int, help='Month')
parser.add_argument('day', metavar='d', type=int, help='Day')
args = parser.parse_args()
today = datetime.date.today()
uinput = datetime.date(args.yr,args.mo,args.day)
print("Delta: "+str((today-uinput).days)+" days")

Calcule l’addition de « n », « nn », et « nnn ». Par exemple, si n = 3, calcule 3 + 33 + 333 :

# A partir de n, calculer l'addition de n, nn et nnn.
import argparse
parser = argparse.ArgumentParser(description='Adds n, nn and nnn.')
parser.add_argument('strn', metavar='n', type=str, help='Value of n')
args = parser.parse_args()
try:
    intn = int(args.strn)
except:
    print("Please input a valid integer.")
    quit()
total = intn + int(args.strn+args.strn) + int(args.strn+args.strn+args.strn)
print(total)

Test de vérification de l’existence d’un fichier :

# Test pour vérifier si un fichier existe
import argparse,os.path
parser = argparse.ArgumentParser(description='Checks if the file exists.')
parser.add_argument('fp', metavar='filepath', type=str, help='Absolute file path')
args = parser.parse_args()
if os.path.isfile(args.fp):
    print("File exists.")
else:
    print("File doesn't exist.")

Conversion d’une chaîne de caractères en nombre à virgule flottante ou en entier :

# Cast d'un string en float ou integer
import argparse
parser = argparse.ArgumentParser(description='Casts a string into a float or integer.')
parser.add_argument('string', metavar='string', type=str, help='String to cast')
args = parser.parse_args()
try:
    casted = int(args.string)
    print("Int. "+str(casted))
except:
    try:
        casted = float(args.string)
        print("Float. "+str(casted))
    except:
        print("Couldn't cast as an int or float.")

Liste le contenu d’un répertoire (non-récursif) :

# Liste du contenu d'un répertoire
import argparse,os
parser = argparse.ArgumentParser(description='Returns all content of a folder.')
parser.add_argument('fp', metavar='filepath', type=str, help='Absolute file path')
args = parser.parse_args()
i=0
if os.path.isdir(args.fp):
    contentlist = os.listdir(args.fp)
    for i in range(0,len(contentlist)):
        print(contentlist[i])
else:
    print("Not a valid directory.")

Affiche les variables d’environnement : 

# Accès aux variables d'environnement
import argparse, os
parser = argparse.ArgumentParser(description='Returns the chosen environment variable.')
parser.add_argument('var', metavar='env', type=str, help='Environment variable name')
args = parser.parse_args()
print(os.environ[args.var])

Retourne la somme des n premiers entiers positifs :

# Retourne la somme des N premiers entiers positifs
import argparse
parser = argparse.ArgumentParser(description='Returns the sum of the n first positive integers.')
parser.add_argument('n', metavar='n', type=int, help='n value')
args = parser.parse_args()
i=0
total = 0
for i in range(i,args.n+1):
    total=total+i
print(total)

Convertit une taille exprimée dans le système impérial (pieds et pouces) vers le système métrique (mètres et centimètres) : 

# Conversion d'une taille du système impérial vers métrique
import argparse
parser = argparse.ArgumentParser(description='Converts a size from the imperial system to metric.')
parser.add_argument('ft', metavar='feet', type=int, help='Feet')
parser.add_argument('i', metavar='inches', type=int, help='Inches')
args = parser.parse_args()
size = round(float((args.ft*30.48)+(args.i*2.54)),2)
print(str(size)+" cm")

Calcule l’hypothenuse d’un triangle rectangle :

# Calcul de l'hypothénuse d'un triangle rectangle
import argparse,math
parser = argparse.ArgumentParser(description='Return the hypothenuse (BC) of a right-angled triangle.')
parser.add_argument('ab', metavar='AB', type=int, help='AB')
parser.add_argument('ac', metavar='AC', type=int, help='AC')
args = parser.parse_args()
bc=math.sqrt(args.ab**2+args.ac**2)
print(round(bc,2))

Convertit en secondes un temps exprimée en jours, heures, minutes et secondes :

# Conversion en secondes d'un temps donnée
import argparse
parser = argparse.ArgumentParser(description='Returns the given timelapse in seconds.')
parser.add_argument('d', metavar='days', type=int, help='Days')
parser.add_argument('h', metavar='hours', type=int, help='Hours')
parser.add_argument('m', metavar='minutes', type=int, help='Minutes')
parser.add_argument('s', metavar='seconds', type=int, help='Seconds')
args = parser.parse_args()
total = args.d*24*60*60
total = total+args.h*60*60
total = total+args.m*60
total = total+args.s
print(total)

Inversement, convertit une valeur exprimée en secondes en secondes, minutes, heures et jours :

# Conversion d'une valeur en secondes en jours, heures, minutes et secondes
import argparse
parser = argparse.ArgumentParser(description='Returns the given timelapse in seconds.')
parser.add_argument('s', metavar='seconds', type=int, help='Seconds')
args = parser.parse_args()
days=int((args.s/86400))
daysmod = args.s%86400
hours=int((daysmod/3600))
hoursmod = daysmod%3600
mins = int((hoursmod/60))
secs = hoursmod%60
print("Days: "+str(days))
print("Hours: "+str(hours))
print("Minutes: "+str(mins))
print("Seconds: "+str(secs))

Calcul de l’indice de masse corporelle :

# Calcul de l'IMC
import argparse
parser = argparse.ArgumentParser(description='Returns the given timelapse in seconds.')
parser.add_argument('p', metavar='kg', type=float, help='Weight (kg)')
parser.add_argument('t', metavar='mt', type=float, help='Height (m)')
args = parser.parse_args()
print("BMI: "+str(round(args.p/(args.t**2),2)))

Calcule la somme des chiffres d’un nombre. Par exemple, si le nombre est 230, calcule 2 + 3 + 0 :

# Calcul de la somme des chiffres d'un nombre
import argparse
parser = argparse.ArgumentParser(description='Returns the sum of every digit in the integer.')
parser.add_argument('n', metavar='n', type=int, help='n')
args = parser.parse_args()
nstr = str(args.n)
i=0
total = 0
for i in range(0,len(nstr)):
    d = int(nstr[i])
    total = total+d
print(total)

Retour la valeur ASCII d’un caractère saisi :

# Obtention de la valeur ASCII d'un caractère saisi
import argparse
parser = argparse.ArgumentParser(description='Returns the ASCII value of a character.')
parser.add_argument('char', metavar='char', type=str, help='Character')
args = parser.parse_args()
print(ord(args.char))

Echange les valeurs de deux variables et les affiche :

# Swap de deux variables
import argparse
parser = argparse.ArgumentParser(description='Swaps the value of 2 str variables')
parser.add_argument('a', metavar='a', type=str, help='a')
parser.add_argument('b', metavar='b', type=str, help='b')
args = parser.parse_args()
b = args.a
a = args.b
print("Original a value: "+args.a)
print("Original b value: "+args.b)
print("New a value: "+a)
print("New b value: "+b)
Lien pour marque-pages : Permaliens.

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.