2017-04-20 17 views
0

私は入力を受け取り、入力された数字をそれが成し遂げられるグレードと一緒に書き出すプログラムを書く必要があります。私のプログラムは動作しますが、明らかに私はローカル変数のみを使用することになっています。ローカル変数だけになるように変更する必要はありますか?以下の2つの変数は、私が現在グローバル変数として使用しているものです。グローバル変数なしでこれをどのように記述しますか?

# 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() 

私はまだ、2つの独立した機能を持っていることになっています。

+0

ここにコードを不変化してください。 – tdelaney

答えて

1

getScores入力時に数字を必要としません...ループの前にデフォルト値を作成することができます。グローバル変数を記述するのではなく、作成したリストを返すことができます。呼び出し元は、その戻り値を覚えて、次の呼び出しでそれを使用します。

# 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

main()、score = getScores(number)、 "NameError:name 'number'が定義されていません"というエラーが発生しました – Drizzy

+1

私の悪い...コピー/貼り付けエラーです。更新されたコードが動作します。 – tdelaney

関連する問題