我是Python新手。 我正在创建一个GPA计算器。第一部分是取一个学号并检查它是否有效。如果数字的总和可被7整除(该部分有效),则有效。
如果号码有效,则用户必须输入所有班级的字母等级。代码必须继续接受输入,直到提交空行。我正在为这部分使用while循环。
但是一旦提交了所有成绩,并且他们输入了一个空行,我需要接受原始输入并使用它来计算他们的GPA。我的问题是,在while循环结束后似乎没有其他代码运行。我想运行一个for循环来检查输入并将它们转换成GPA分数,但无论我把它放在哪里/放入它,代码都会在输入提交后结束。
以下是我所做的:
student_number=raw_input("What is your 5-digit student number?")
added_digits=sum(int(x) for x in student_number)
div_7=added_digits%7
if div_7==0 and len(str(student_number))==5:
print "Your student number is valid."
grades=raw_input("To find out your average GPA, please list your letter
grades for each class.\n")
while grades!="":
grades=raw_input()
grade_value=0
for x in grades:
if x=="A":
grade_value+=4.0
print grade_value
if x=="B":
grade_value+=3.0
print grade_value
else:
print "That is not a valid student number."`enter code here`
无论我输入什么输入,while循环之后的for循环似乎永远不会运行。在while循环之后,我似乎无法使代码执行任何其他操作。
谢谢!
答案 0 :(得分:2)
你的while循环确保grades
结束为空(它抛出任何非空的东西),然后你的for循环遍历那个空grades
。所以当然它没有任何关系。
答案 1 :(得分:1)
问题是你的for-loop使用成绩而成绩不是一个列表,在我看来,你应该再使用一个列表来存储你的成绩:
https://github.com/android/tools_repo
答案 2 :(得分:0)
raw_input将自己的等级作为输入。你不需要再循环使用它们。
所以,这是做你正在尝试做的事情的一种方式。
student_number=raw_input("What is your 5-digit student number?")
added_digits=sum(int(x) for x in student_number)
div_7=added_digits%7
if div_7==0 and len(str(student_number))==5:
print "Your student number is valid."
grades=raw_input("To find out your average GPA, please list your letter grades for each class.\n")
#while grades!="":
#grades=raw_input()
grade_value=0
for x in grades:
if x=="A":
grade_value+=4.0
print grade_value
if x=="B":
grade_value+=3.0
print grade_value
else:
print "That is not a valid student number."