我需要修改程序,以便它包括带循环的主要读取。文档说我的getNumber函数应该只要求用户输入2到30之间的数字,getScores函数应该要求用户输入0到100之间的数字。应该告诉他们重新输入一个数字。我在运行程序时没有收到任何错误,但不确定要丢失什么,以确保其正确运行以包含重新输入数字部分。这是代码:
# main
def main():
endProgram = 'no'
print
while endProgram == 'no':
totalScores = 0
averageScores = 0
number = 0
number = getNumber(number)
totalScores = getScores(totalScores, number)
averageScores = getAverage(totalScores, averageScores, number)
printAverage(averageScores)
endProgram = input('Do you want to end the program? yes or no ')
while not (endProgram != 'yes' or endProgram != 'no'):
print('Enter yes or no ')
endProgram = input('Do you want to end the program? (yes or no )')
# this function will determine how many students took the test
def getNumber(number):
number = int(input('How many students took the test: '))
return number
while number < 2 or number > 30:
print('Please enter a number between 2 and 30')
number = int(input('How many students took the test: '))
# this function will get the total scores
def getScores(totalScores, number):
for counter in range(0, number):
score = int(input('Enter their score: '))
return totalScores
while score < 0 or score > 100:
print('Please enter a number between 0 and 100')
score = int(input('Enter their score: '))
return score
# this function will calculate the average
def getAverage(totalScores, averageScores, number):
averageScores = totalScores / number
return averageScores
# this function will display the average
def printAverage(averageScores):
print ('The average test score is: ', averageScores)
# calls main
main()
替换:
def getNumber(number):
number = int(input('How many students took the test: '))
return number
while number < 2 or number > 30:
print('Please enter a number between 2 and 30')
number = int(input('How many students took the test: '))
with:
def getNumber():
number = int(input('How many students took the test: '))
while number < 2 or number > 30:
print('Please enter a number between 2 and 30')
number = int(input('How many students took the test: '))
return number
第一个建议是更改此:
number = int(input('How many students took the test: '))
原因是,在撰写本文时,这需要用户输入,并且隐式假定可以将其强制转换为int
。如果用户输入“ 你好,世界!”作为输入会发生什么?
接下来,整个函数有一些结构性问题:
def getNumber(number):
number = int(input('How many students took the test: '))
return number
while number < 2 or number > 30:
print('Please enter a number between 2 and 30')
number = int(input('How many students took the test: '))
数字作为参数传递给getNumber
。然后将名称number
重新分配给读取用户输入的结果,并返回...确保您了解return
语句的作用:一旦控制流到达return语句,该函数将终止,并发送该值返回给调用者。因此,您的while
循环永远不会运行。