2017-10-07 37 views
-1

我是Python新手。 我正在創建一個GPA計算器。第一部分是拿一個學號並檢查它是否有效。如果數字的總和可以被七整除(該部分起作用),那麼這是有效的。爲什麼在使用while循環後不會運行更多的代碼?

如果該號碼有效,那麼用戶必須爲他們的所有課程輸入他們的字母等級。代碼必須保持接受輸入,直到提交空白行。我爲這部分使用了一個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` 

無論我把什麼輸入,for循環後while循環似乎從來沒有運行。我似乎無法讓代碼在while循環後執行其他任何操作。

謝謝!

+0

你能清理你的代碼,使它更容易閱讀嗎?它的方式使得真正難以幫助您進行調試。 –

+0

感覺你的循環中的縮進是錯誤的。 – sircodesalot

+0

除了你得到的答案之外,如果'!='「'''''''''''''''''''''''''',那麼您可能想要將成績追加到列表中,然後一旦剔除while循環就迭代該列表的內容。當您詢問'raw_input()'時,'grades'被完全重新定義,所以以前的所有值都會丟失。 – roganjosh

回答

1

的問題是,您的for循環使用的等級,而等級並不是一個列表,在我看來,你應該用一個更加列表您存儲等級:

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") 
    grade_list = [grades] #use a list to store your grades 
    while grades!="": 
     grades=raw_input() 
     grade_list.append(grades) #store every input in grade_list 
    grade_value=0 
    for x in grade_list:   #use grade_list, not 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." 
2

您的while循環確保grades最終爲空(它拋出任何非空的東西),然後您的for循環會遍歷空grades。所以當然是它無關。

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." 
相關問題