Python 包括函数的循环,以便在数字不正确时要求用户重新输入数字
我需要修改我的程序,使其包含一个带循环的主读。文档中说,对于我的getNumber函数,它应该只要求用户输入一个介于2和30之间的数字,getScores函数应该要求用户输入一个介于0和100之间的数字。如果他们没有得到一个数字,它应该告诉他们重新输入一个数字。我在运行程序时没有收到任何错误,但不确定我缺少了什么,以确保其正常运行,包括重新输入数字部分。代码如下:Python 包括函数的循环,以便在数字不正确时要求用户重新输入数字,python,python-3.8,Python,Python 3.8,我需要修改我的程序,使其包含一个带循环的主读。文档中说,对于我的getNumber函数,它应该只要求用户输入一个介于2和30之间的数字,getScores函数应该要求用户输入一个介于0和100之间的数字。如果他们没有得到一个数字,它应该告诉他们重新输入一个数字。我在运行程序时没有收到任何错误,但不确定我缺少了什么,以确保其正常运行,包括重新输入数字部分。代码如下: # main def main(): endProgram = 'no' print while endPr
# 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 main():
endProgram='否'
打印
而endProgram==“否”:
总分=0
平均分数=0
数字=0
number=getNumber(number)
totalScores=getScores(totalScores,数字)
averageScores=getAverage(总分、平均分、数字)
打印平均值(平均分数)
endProgram=input('是否要结束程序?是或否')
而不是(endProgram!=“是”或endProgram!=“否”):
打印('输入是或否')
endProgram=input('是否要结束程序?(是或否)')
#此函数将确定参加考试的学生人数
def getNumber(编号):
number=int(输入('参加考试的学生人数:'))
返回号码
当数量<2或数量>30时:
打印('请输入一个介于2和30'之间的数字)
number=int(输入('参加考试的学生人数:'))
#此函数将获取总分
def getScores(总分数,数字):
对于范围(0,数字)内的计数器:
分数=整数(输入('输入他们的分数:'))
返回总分
当分数<0或分数>100时:
打印('请输入一个介于0和100'之间的数字)
分数=整数(输入('输入他们的分数:'))
回击得分
#此函数将计算平均值
def getAverage(总分数、平均分数、数字):
平均分数=总分数/数字
返回平均分数
#此函数将显示平均值
def打印平均值(平均分数):
打印('平均测试分数为:',平均分数)
#主叫
main()
第一个建议是改变这一点:
number = int(input('How many students took the test: '))
原因是,在编写时,它接受用户输入,并隐式地假设它可以转换为int
。如果用户输入“hello,world!”作为输入,会发生什么?必须首先将用户输入作为字符串,并检查转换是否有效:
number = input("enter a number:")
if number.isdecimal():
number = int(number)
其次,功能作为一个整体存在一些结构性问题:
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: '))
def getNumber():
while number := input("enter a number"):
if number.isdecimal() and int(number) in range(0, 31):
return int(number)
print('Please enter a number between 2 and 30')