包括该函数的循环,因此如果数字不正确,它可以要求用户重新输入数字

问题描述 投票:-3回答:1

我需要修改程序,以便它包括带循环的主要读取。文档说我的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()
python python3.8.1
1个回答
0
投票

替换:

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

0
投票

第一个建议是更改此:

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循环永远不会运行。

© www.soinside.com 2019 - 2024. All rights reserved.