2012-12-01 5 views
0

J'ai écrit un programme de calculatrice simple en utilisant des fonctions, je ne sais pas exactement ce qui ne va pas avec ce code, son erreur d'affichage. J'ai fait des pas possibles pour déboguer cela, mais je ne pouvais pas.programme calculatrice python

#!/usr/bin/python 

def add():   
     print "Enter the two numbers to Add" 
     A=int(raw_input("Enter A:")) 
     B=int(raw_input("ENter B:")) 
     c = A + B 

def sub():    
     print "Enter the two numbers to Subtract" 
     A=int(raw_input("Enter A:")) 
     B=int(raw_input("Enter B:")) 
     c = A - B 

def Mul(): 
     print "Enter the two numbers to Multiply" 
     A=int(raw_input("Enter A:")) 
     B=int(raw_input("Enter B:")) 
     c = A * B 

def Div(): 
     print "Enter the two number to Divide" 
     A=float(raw_input("Enter A:")) 
     B=float(raw_input("Enter B:")) 
     c = A/B 

print "1: ADDITION" 
print "2: SUBTRACTION" 
print "3: MULTIPLICATION" 
print "4: DIVITION" 
print "0: QUIT" 

while true: 

    CHOICE = int(raw_input(("ENTER THE CORRESPONDING NUMBER FOR CALCULATION")) 

    if CHOICE == "1": 
     print 'ADDING TWO NUMBERS:' 
     add(c): 

    elif CHOICE == "2": 
     print 'SUBTRACTING TWO NUMBERS:' 
     sub(c): 

    elif CHOICE == "3": 
     print 'MULTIPLYING TWO NUMBERS:' 
     Mul(c): 

    elif CHOICE == "4": 
     print "DIVIDEING TWO NUMBERS" 
     Div(c): 

    elif CHOICE == "0": 
     return 0: 

    else 
     Print "The value Enter value from 1-4" 

Erreur:

File "cal_fun.py", line 44 
    if CHOICE == "1": 
       ^
SyntaxError: invalid syntax 

Répondre

1

vous manque une parenthèse fin de la ligne précédente (une cause fréquente d'erreurs mystérieuses de syntaxe), changement:

CHOICE = int(raw_input(("ENTER THE CORRESPONDING NUMBER FOR CALCULATION")) 

à

CHOICE = int(raw_input("ENTER THE CORRESPONDING NUMBER FOR CALCULATION")) 

Ceci est pas la seule erreur de syntaxe dans la PROGRAM- vous finissez avec de nombreuses lignes : quand vous ne devriez pas, comme:

add(c): 
    sub(c): 
    Mul(c): 
    Div(c): 

Vous aussi

  1. avez pas : pour une déclaration else (obligatoire)
  2. tirer Print quand il devrait être print
  3. ont une déclaration de retour en dehors de toute fonction

Il y a aussi des erreurs qui ne sont pas des erreurs de syntaxe:

  1. Misspell True comme true
  2. comparer CHOICE, un int, à une chaîne comme "1" ou "2"
  3. passent une variable inexistante c à une fonction qui ne prend pas d'arguments
+0

Je reçois la même erreur si la déclaration même après avoir fait toutes les modifications « » l'erreur dans le fichier 47e de ligne. "cal_fun.py", ligne 47 si CHOICE == 1: "" ^ –

+0

@PrabhuAre: Assurez-vous que vous avez changé 'CHOICE = int (raw_input ((" 'line à' CHOICE = int (raw_input ("' (le premier changement que j'ai suggéré), c'est la seule explication. Vous pouvez modifier votre question pour inclure votre nouveau code. (Etes-vous sûr que vous éditez le bon fichier et que vous l'avez sauvegardé?) –

4

J'ai essayé de couvrir tous les problèmes avec votre code, dont ils sont nombreux.

A partir de syntax erreurs:

# true needed a captial T 
while True: 

    # Brackets were mismatched 
    CHOICE = int(raw_input("ENTER THE CORRESPONDING NUMBER FOR CALCULATION")) 

    if CHOICE == "1": 
     print 'ADDING TWO NUMBERS:' 
     # Calling a function shouldn't have trailing : 
     add(c) 

    elif CHOICE == "2": 
     print 'SUBTRACTING TWO NUMBERS' 
     # Calling a function shouldn't have trailing : 
     sub(c) 

    elif CHOICE == "3": 
     print 'MULTIPLYING TWO NUMBERS' 
     # Calling a function shouldn't have trailing : 
     Mul(c) 

    elif CHOICE == "4": 
     print "DIVIDEING TWO NUMBERS" 
     # Calling a function shouldn't have trailing : 
     Div(c) 

    elif CHOICE == "0": 
     # can only return from a function use exit here instead 
     exit() 

    # else needs a trailing : 
    else: 
     # No capital P for print 
     print "The value Enter value from 1-4" 

Le code n'a maintenant syntax erreurs mais il a encore beaucoup de problèmes.

  1. Vous passez c à votre fonction, c est jamais initialisé, ce qui est c?
  2. Votre fonction ne prend pas les arguments def add():(même si passer la mystérieuse valeur c).
  3. Votre fonction ne calcule pas le résultat print ou return.
  4. vous amassez CHOICE comme int sont faire des comparaisons avec des chaînes de sorte que le cas else est toujours exécuté et il n'y a aucun moyen de sortir de la boucle (boucle infinie).

Code fixe:

#!/usr/bin/python 

def add(): 
     print "Enter the two numbers to Add" 
     A=int(raw_input("Enter A: ")) 
     B=int(raw_input("Enter B: ")) 
     return A + B 

def sub(): 
     print "Enter the two numbers to Subtract" 
     A=int(raw_input("Enter A: ")) 
     B=int(raw_input("Enter B: ")) 
     return A - B 

def mul(): 
     print "Enter the two numbers to Multiply" 
     A=int(raw_input("Enter A: ")) 
     B=int(raw_input("Enter B: ")) 
    return A * B 

def div(): 
     print "Enter the two number to Divide" 
     A=float(raw_input("Enter A: ")) 
     B=float(raw_input("Enter B: ")) 
     return A/B 

print "1: ADDITION" 
print "2: SUBTRACTION" 
print "3: MULTIPLICATION" 
print "4: DIVITION" 
print "0: QUIT" 

while True: 

    CHOICE = int(raw_input("ENTER THE CORRESPONDING NUMBER FOR CALCULATION ")) 

    if CHOICE == 1: 
     print 'ADDING TWO NUMBERS:' 
     print add() 

    elif CHOICE == 2: 
     print 'SUBTRACTING TWO NUMBERS' 
     print sub() 

    elif CHOICE == 3: 
     print 'MULTIPLYING TWO NUMBERS' 
     print mul() 

    elif CHOICE == 4: 
     print "DIVIDEING TWO NUMBERS" 
     print div() 

    elif CHOICE == 0: 
     exit() 
    else: 
     print "The value Enter value from 1-4" 

Le code est maintenant fonctionnel.

Sortie:

1: ADDITION 
2: SUBTRACTION 
3: MULTIPLICATION 
4: DIVITION 
0: QUIT 
ENTER THE CORRESPONDING NUMBER FOR CALCULATION 1 
ADDING TWO NUMBERS: 
Enter the two numbers to Add 
Enter A: 2 
Enter B: 5 
7 
ENTER THE CORRESPONDING NUMBER FOR CALCULATION 2 
SUBTRACTING TWO NUMBERS 
Enter the two numbers to Subtract 
Enter A: 2 
Enter B: 5 
-3 
ENTER THE CORRESPONDING NUMBER FOR CALCULATION 3 
MULTIPLYING TWO NUMBERS 
Enter the two numbers to Multiply 
Enter A: 2 
Enter B: 5 
10 
ENTER THE CORRESPONDING NUMBER FOR CALCULATION 4 
DIVIDEING TWO NUMBERS 
Enter the two number to Divide 
Enter A: 2 
Enter B: 5 
0.4 
ENTER THE CORRESPONDING NUMBER FOR CALCULATION 0 

fonctionnelle mais pas parfait, pour le traitement par exemple aucune erreur pour l'entrée erronée.

+0

Je reçois la même erreur dans if, même après avoir fait toutes les modifications. L'erreur est aslan @ aslan-HP-Pavilion-dv6-Notebook-PC: ~/Desktop/python $ python cal_fun.py Fichier "cal_fun.py", ligne 47 si CHOIX == 1: ^ SyntaxError: invalide syntaxe –

1

Vous passez une variable c à vos fonctions add()sub() etc. mais elles sont définies pour ne prendre aucun argument.

1

sur des erreurs de syntaxe déjà mentionné ce que je pense que vous voulez vraiment est pour chaque fonction pour renvoyer des valeurs à la boucle principale du programme, qui sera ensuite les afficher:

def add(): 
    A=int(raw_input("Enter A:")) 
    B=int(raw_input("ENter B:")) 
    return A + B 
... 

while true: 

    CHOICE = int(raw_input(("ENTER THE CORRESPONDING NUMBER FOR CALCULATION")) 

    if CHOICE == "1": 
     print 'ADDING TWO NUMBERS:' 
     answer = add() 
     print answer 
    ... 

ou bien rendre le programme plus court en entrant A et B dans la boucle principale qui passe alors ceux comme paramètres pour les fonctions de calcul:

def add(): 
    return A + B 
... 

while true: 

    CHOICE = int(raw_input(("ENTER THE CORRESPONDING NUMBER FOR CALCULATION")) 
    A=int(raw_input("Enter A:")) 
    B=int(raw_input("ENter B:")) 
    if CHOICE == "1": 
     print 'ADDING TWO NUMBERS:' 
     answer = add(A, B) 
     print answer 
    ... 
+0

Serait-il possible d'accéder à la fonction add() dans d'autres programmes, si je vais avec cette méthode. –

+0

En général, vous ne pouvez pas accéder aux fonctions d'un programme à partir d'un autre sauf si elles sont stockées en tant que [modules] (http://docs.python.org/2/tutorial/modules.html). Vous pouvez cependant accéder à la fonction d'ajout à partir de n'importe quel code dans le même fichier. Dans la 1ère version vous appelez simplement add() et dans la seconde vous devez lui dire quoi ajouter - ajouter (x, y). – Stuart