2017-09-16 3 views
-1

J'ai un code simple. Et j'ai un problème: "Unresolver reference 'a' more ...". Ce problème se produit à la troisième fonction if.Référence non résolue en fonction si

enter image description here

Et je dois déclarer en dehors de la fonction abcd, sinon à chaque fois dans la fonction a tout sera réglé sur la valeur que je déclare et non selon le cas. Comment faire?

def abcd(s, e): 
if s<0.72: 
    if e>30: 
    a=0 
    return a 

else: 
    a=0 
    return a 
else: 
    if a == 1: 
     a = 1 
     return a 
    else: 
     a=1 
     return a 
while True: 
abcd 
+2

S'il vous plaît fixer votre empreinte. –

+1

Python ** n'a pas de déclaration de variable **. Vous pouvez utiliser une directive 'global a' dans votre fonction, si vous voulez que la fonction considère' a' comme le 'a' global, sinon, puisque vous affectez' a', le compilateur marque 'a' comme * local * . –

+0

Copie possible de [Utilisation de variables globales dans une fonction autre que celle qui les a créées] (https://stackoverflow.com/questions/423379/using-global-variables-in-a-function-other-than-the- one-that-created-them) – wwii

Répondre

0

Vous pouvez définir un = 0 au début de ABCD, comme ceci:

def abcd(s, e): 
    a = 0 
    if s<0.72: 
     if e>30: 
      a=0 
      return a 
     else: 
      a=0 
      return a 
    else: 
     if a == 1: 
      a = 1 
      return a 
     else: 
      a=1 
      return a 
while True: 
    s = int(input("type value for s ")) 
    e = int(input("type value for e ")) 
    print(abcd(s, e) ) 

Cependant vous pouvez simplifier:

def abcd(s, e): 
    if s<0.72: 
     return 0 
    return 1 

while True: 
    s = int(input("type value for s")) 
    e = int(input("type value for e")) 
    print(abcd(s, e) ) 
+0

Non, je ne l'ai pas fait. Indépendamment de e (e> 30 ou non), a est mis à 0 et renvoyé. regarde le premier bloc de code –

+0

ahh duh bien sûr –