2017-04-20 1 views
0

Je dois écrire un programme qui saisit et écrit le nombre entré avec le grade que ce serait. Mon programme fonctionne mais apparemment je ne suis supposé utiliser que des variables locales. Qu'est-ce que j'ai besoin de changer pour que ce ne soit que des variables locales? Les deux variables ci-dessous sont ce que j'utilise actuellement comme variables globales.Comment écrire ceci sans variables globales?

# This program takes intger inputs and provides a grade value for each number entered 

number = 1 
myNumbers = [] 

print("Please enter as many integer numbers as you would like. Enter -999 to exit loop") 
# This function has the user input values and exit with a sentinel value -999 
def getScores(number): 
    sentinelValue = -999 

    while(number != sentinelValue): 
     number = eval(input("Enter an integer: ")) 

     if number > -1: 
      myNumbers.append(number) 

    print("Numbers entered: ") 
    print(myNumbers, "\n") 


# This function prints out the values with the appropriate letter grade 
def printScores(): 

    print("Length of array = ", len(myNumbers)) 

    for i in range(0, len(myNumbers)): 

     if myNumbers[i] >= 90: 
      print(myNumbers[i], "is an A") 
     if myNumbers[i] >= 80 and myNumbers[i] < 90: 
      print(myNumbers[i], "is a B") 
     if myNumbers[i] >= 70 and myNumbers[i] < 80: 
      print(myNumbers[i], "is a C") 
     if myNumbers[i] >= 60 and myNumbers[i] < 70: 
      print(myNumbers[i], "is a D") 
     if myNumbers[i] >= 0 and myNumbers[i] < 60: 
      print(myNumbers[i], "is an F") 
# The main function is where we will call the other functions and print out the results 
def main(): 

    getScores(number) 
    printScores() 

# Call the main 
main() 

Je suis toujours supposé avoir les deux fonctions séparées.

+0

Afficher le code ici pour être immortalisé. – tdelaney

Répondre

1

getScores n'a pas besoin d'un nombre sur l'entrée ... il peut simplement créer une valeur par défaut avant la boucle. Il peut renvoyer la liste qu'il crée au lieu d'écrire une variable globale. L'appelant mémorise cette valeur de retour et l'utilise dans l'appel suivant.

# This program takes intger inputs and provides a grade value for each number entered 

print("Please enter as many integer numbers as you would like. Enter -999 to exit loop") 
# This function has the user input values and exit with a sentinel value -999 
def getScores(): 
    sentinelValue = -999 
    number = '' 
    myNumbers = [] 
    while(number != sentinelValue): 
     number = eval(input("Enter an integer: ")) 

     if number > -1: 
      myNumbers.append(number) 

    print("Numbers entered: ") 
    print(myNumbers, "\n") 
    return myNumbers 

# This function prints out the values with the appropriate letter grade 
def printScores(myNumbers): 

    print("Length of array = ", len(myNumbers)) 
    # omit the rest for brevity... 

# The main function is where we will call the other functions and print out the results 
def main(): 
    scores = getScores() 
    printScores(scores) 

# Call the main 
main() 
+0

Je reçois une erreur pour main(), scores = getScores (nombre), et un "NameError: nom 'numéro' n'est pas défini" – Drizzy

+1

Mon mauvais ... une erreur de copier/coller je pense. Le code mis à jour fonctionne. – tdelaney