【问题标题】:I'm having calculation issues with this code我在使用此代码时遇到了计算问题
【发布时间】:2020-11-01 23:32:57
【问题描述】:

过去 3 小时我一直遇到问题,试图弄清楚为什么我输入的无效输入会计入 GPA。

Data = True
while Data:
    totalScore = 0
    name = input("What is the Student's Name: ")
    quizCount = int(input(f"How many quizzes did {name} take: "))
    for x in range(quizCount):
        grade = float(input("Please enter grade for quiz " + str(x+1) + ": "))
        totalScore = totalScore + grade
        
        while grade > 100:
            print("Invalid Input")
            grade = float(input("Please enter a valid grade for quiz " + str(x+1) + ": ")
                
    average = totalScore/quizCount
    
    print("The average for", name, "is", average)

    value = input("Would you like to process another student? (Y/N): ")
    if value.lower() == "y":
        continue
    else:
        print ("Program Exited")
        break

大部分代码都有效,但我不知道如何正确计算。因为这是我在输入之后得到的。

What is the Student's Name: t
How many quizzes did t take: 4
Please enter grade for quiz 1: 100
Please enter grade for quiz 2: 101
Invalid Input
Please enter a valid grade for quiz 2: 101
Invalid Input
Please enter a valid grade for quiz 2: 90
Please enter grade for quiz 3: 80
Please enter grade for quiz 4: 70
The average for t is 87.75

正确答案应该是 85.0...如果有人可以帮助我,将不胜感激...

【问题讨论】:

  • 您将成绩添加到totalScore 而不首先检查它是否有效

标签: python-3.x performance calculation


【解决方案1】:

你的问题在 for 循环中:

for x in range(quizCount):
        grade = float(input("Please enter grade for quiz " + str(x+1) + ": "))
        totalScore = totalScore + grade
        
        while grade > 100:
            print("Invalid Input")
            grade = float(input("Please enter a valid grade for quiz " + str(x+1) + ": ")

实际上,您将第一个给定成绩添加到 totalScore,而不是添加正确的成绩 (

for x in range(quizCount):
        grade = float(input("Please enter grade for quiz " + str(x+1) + ": "))
        
        while grade > 100:
            print("Invalid Input")
            grade = float(input("Please enter a valid grade for quiz " + str(x+1) + ": ")
        totalScore = totalScore + grade

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-06
    • 1970-01-01
    • 2022-07-12
    • 2022-10-06
    • 1970-01-01
    • 2020-02-23
    • 2011-04-05
    相关资源
    最近更新 更多