如何在不使用全局变量的情况下编写此代码?
问题描述:
我必须编写一个程序,它接受输入并写出输入的数字以及它的等级。我的程序工作,但显然我只能使用局部变量。我需要改变什么,以便它只是局部变量?下面的两个变量是我目前用作全局变量的。如何在不使用全局变量的情况下编写此代码?
# 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()
我仍然应该有两个单独的功能。
答
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()
在此处发布代码以实现永久化。 – tdelaney