为什么在使用while循环后不再运行代码?

时间:2017-10-07 14:53:38

标签: python python-2.7 for-loop while-loop

我是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循环之后,我似乎无法使代码执行任何其他操作。

谢谢!

3 个答案:

答案 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."