Bonjour,
Je commence à apprendre à programmer en Python ; ainsi, j'ai voulu coder une fonction qui, à partir de deux arguments, en calcule la somme, la différence, le produit, le quotient, l'exponentiation, ou même la concaténation selon ce que souhaite l'utilisateur.
Mon premier programme fonctionnait, puis j'ai voulu le rendre plus complexe : l'utilisateur peut attribuer une liste de chaîne de caractères ('addition', ...) à la variable opération, pour que toutes ces opérations soient effectuées à la suite, dans l'ordre.
Mais mon programme ne fonctionne pas correctement lorsque j'entre des listes : est-ce que quelqu'un peut m'expliquer d'où vient le problème ?

Voilà le programme :
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
38
39
40
41
42
43
44
45
46
47
48
49
def calc(x, y):
    operation = input("Entrez le type d'opération à* effectuer : ")
    if isinstance(operation, list):
        for i in range(len(operation) - 1):
            if type(x) == type(y):
                if isinstance(x, str):
                    if (operation[i] == 'concaténation' or operation[i] == 'Concaténation'):
                        return(x+y)
                    else:
                        print('Erreur')
                elif isinstance(operation[i], str):
                    if (operation[i] == 'addition' or operation[i] == 'Addition'):
                        return(x+y)
                    elif (operation[i] == 'soustraction' or operation[i] == 'Soustraction'):
                        return(x-y)
                    elif (operation[i] == 'multiplication' or operation[i] == 'Multiplication'):
                        return(x*y)
                    elif ((operation[i] == 'division' or operation[i] == 'Division') and not y == 0):
                        return(x/y)
                    elif ((operation[i] == 'exponentiation' or operation[i] == 'Exponentiation') and not (x, y) == (0, 0)):
                        return(x**y)
                    else:
                        print('Erreur')
                else:
                    print('Erreur')
            else:
                print('Erreur')
    else:
        if type(x) == type(y):
            if isinstance(x, str):
                if (operation == 'concaténation' or operation == 'Concaténation'):
                    return(x+y)
                else:
                    print('Erreur')
            elif isinstance(operation, str):
                if (operation == 'addition' or operation == 'Addition'):
                    return(x+y)
                elif (operation == 'soustraction' or operation == 'Soustraction'):
                    return(x-y)
                elif (operation == 'multiplication' or operation == 'Multiplication'):
                    return(x*y)
                elif ((operation == 'division' or operation == 'Division') and not y == 0):
                    return(x/y)
                elif ((operation == 'exponentiation' or operation == 'Exponentiation') and not (x, y) == (0, 0)):
                    return(x**y)
                else:
                    print('Erreur')
            else:
                print('Erreur')
calc 2.py