【发布时间】: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