1 pièce(s) jointe(s)
Problème de listes dans un calculateur
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:
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') |
Pièce jointe 292598