【问题标题】:How to update value of variable for each iteration in a while loop?如何在while循环中更新每次迭代的变量值?
【发布时间】:2021-05-30 02:11:29
【问题描述】:

我试图在每次 while 循环运行时根据用户输入更新变量“gpa”和“num_of_credits”,以便最终获得平均值。

代码:

name = input('Enter your name: ').capitalize()
semester = input(f"{name}, You are calculating your GPA for which semester?: ").lower()
while True:
    course_code = input("Enter your course code: ")
    num_of_credits = float(input(f"Enter the number of credit for {course_code}: "))
    letter_grade = input("Enter the letter grade: ")
    if letter_grade == 'A+':
        letter_grade = 4.3
    elif letter_grade == 'A':
        letter_grade = 4.0
    elif letter_grade == 'A-':
        letter_grade = 3.7
    elif letter_grade == 'B+':
        letter_grade = 3.3
    elif letter_grade == 'B':
        letter_grade = 3.0
    elif letter_grade == 'B-':
        letter_grade = 2.7
    elif letter_grade == 'C+':
        letter_grade = 2.3
    elif letter_grade == 'C':
        letter_grade = 2.0
    elif letter_grade == 'C-':
        letter_grade = 1.7
    elif letter_grade == 'D+':
        letter_grade = 1.3
    elif letter_grade == 'D':
        letter_grade = 1.0
    elif letter_grade == 'D-':
        letter_grade = 0.7
    elif letter_grade == 'F':
        letter_grade = 0.0
    else: 
        print("Please enter a valid letter grade")
    gpa = (num_of_credits) * letter_grade
    
    print(num_of_credits)
    print(gpa)
    cont = input(f"Did you take any other class during {semester}? (y/n): ")
    if cont == 'y':
        continue
    else:
        break
    print(num_of_credits)
    print(gpa)
letter_grade = float(letter_grade)
cgpa = gpa / num_of_credits
print(f'Your cumulative gpa for {semester} is {cgpa}')

这是我运行代码时得到的:

输出

Enter your name: x
X, You are calculating your GPA for which semester?: y
Enter your course code: z1
Enter the number of credit for z1: 3
Enter the letter grade: A
3.0
12.0
Did you take any other class during y? (y/n): y
Enter your course code: z2
Enter the number of credit for z2: 3
Enter the letter grade: B
3.0
9.0
Did you take any other class during y? (y/n): n
Your cumulative gpa for y is 3.0

相反,我希望每次循环运行时都存储/更新这些值,以便最终获得平均值。

任何帮助将不胜感激!

ps。我想知道创建一个空列表然后在每次循环运行时添加新值是否是个好主意?

【问题讨论】:

    标签: python-3.x while-loop


    【解决方案1】:

    我认为您在从循环外部的空列表开始并在您进行时添加到它的正确轨道上。为了简化示例,下面的代码包含了关键部分,而省略了中间的所有内容:

    gpa_list = []
    ...
    while True:
        ...
        gpa = (num_of_credits) * letter_grade
        gpa_list.append(gpa)
        ...
    ...
    avg_gpa = sum(gpa_list) / len(gpa_list)
    

    【讨论】:

    • 非常感谢!我为这两个变量创建了空列表,并且效果很好!感谢您的帮助!
    最近更新 更多