Salut à tous! Je suis tout nouveau sur ce forum et je code seulement depuis 1 mois et demi. Enfin je "code" pas vraiment c'est juste que l'informatique c'est un de mes cours obligatoire dans mon école d'ingénieur. Ce week-end je me faisais chier et il faisait moche dehors donc j'ai codé une fonction qui affiche une fonction linéaire de la forme f(x)=ax avec des 0 pour les axes et des points pour les valeurs de f(x).
Je suis débutant et j'ai très peu de connaissances en python donc j'ai du coder ça avec le peu de choses que je sais. Je vous mets le code en pièce jointe, si des experts peuvent me dire comment optimiser mon code et comment le condenser se serait trop bien :)
Pour le moment la fonction ne marche qu'avec des coefficients a strictement positifs mais je vais réfléchir pour une version ou l'axe négatif apparaît (je pense que je vais procéder par symétrie) et où c'est possible de rajouter une constante c à la fonction (f(x)=ax+c). Une fois que j'aurai upgrade tout ça j'aimerai aussi coder une fonction pour les fonctions quadratiques et j'ai déjà une petite idée de comment faire.
Je pense que je vais procéder de manière complètement différente. Je vais tout d'abord créer une liste comme j'ai fait avec la fonction linéaire ou j'y rajouterai toutes les valeurs pour un nombre donné d'itérations. Ensuite je définirai le max de ma liste (f), puis je créerai une seconde liste avec f éléments identiques (des 0), et je remplacerai ensuite les éléments d'indice f(x) par f(x), ça se sera la liste de l'axe des y. Ensuite je créerai une loop for avec des conditions différentes et plus optimales que la boucle de la fonction linéaire. Si je fais ça bien je pourrai prendre n'importe quelle fonction sauf les fonction périodiques.
Bref voilà merci déjà pour les retours potentiels je sais pas trop si ce forum est fait pour ça mais je tente ma chance ahahah.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 def compute_linear_function(a,b) : '''Ce programme calcule une fonction de votre choix, poruvu qu'elle respecte ces caractéristiques : 1. Elle doit être de la forme f(x)=ax 2. a et b doivent être strictement positifs 3. Vous pouvez appelez la fonction avec le paramètre a et b 4. b est le nombre d'itération''' liste_valeurs=[] for i in range(b) : liste_valeurs.append((a*i)) f=max(liste_valeurs) print(liste_valeurs) liste_valeurs.reverse() print('\n'*2) for j in range(f+1) : if j==f : print("° "+("0"+' ')*(b-1)) return if j%a==0 : g=liste_valeurs[int(j/a)] liste_valeurs.reverse() print('0'+' '*(liste_valeurs.index(g)-1)+' °') if j%a!=0 : print('0 \n', end='')
Edit : Vous trouverez ci-dessous la version améliorée et compatible pour les fonctions quadratiques (et n'importe quelle fonction de degré supérieur ou égal à deux). Pour les fonctions quadratiques l'écart entre les points devient vite grand, je vais essayer de trouver une manière de "relier" ces points avec le caractère '|'.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 def compute_quadratic_function(a,b,c,d) : '''Ce programme calcule une fonction quadratique de coefficient a et b de votre choix, avec un nombre c d'itération : 1. Elle doit être de la forme f(x)=ax^2+bx+c 2. a, b, c doivent être positifs et être des entiers 3. d est le nombre d'itération 4. d doit être strictement positif''' l_v=[] for i in range(d) : l_v.append(a*(pow(i,2))+(b*i)+c) print(l_v) print('\n') print(f"L'expression de la fonction s'écrit : f(x)={a}x^2+{b}x+{c}") print('\n'*3) f=max(l_v) l_y=[] for j in range(f+1) : l_y.append('n') l_y[f]='m' l_y.reverse() for k in range(d) : l_y[l_v[k]]=l_v[k] l_y.reverse() print(l_y) for l in range(f+1) : if l_y[l]=='n' : print('0 \n', end='') if l_y[l]=='m' : print('0 '*(d+5)) if l_y[l]!='n' and l_y[l]!='m' : if l_v.index(l_y[l])==0 and l_y[l]==0 : print('° '+'0 '*(d+5)) if l_v.index(l_y[l])==0 and l_y[l]!=0 : print('° \n', end='') if l_v.index(l_y[l])!=0 and l_y[l]!=0 : print('0 '+' '*(l_v.index(l_y[l])-1)+ '° ')
Partager