簡體   English   中英

為什么我的循環在 if 語句之后停止?

[英]Why is my loop stopping after if statement?

我對編碼很陌生,所以請善待。 對於作業,我需要創建計算 GPA 分數的 Python 代碼。 在這部分,它必須獲取一個輸入列表並將字母轉換為它們的等效分數,並打印總分數。

它似乎只讀取第一個 IF 語句並在此之后停止,而不是在遍歷輸入列表時重復。

letters = ['A', 'B' ,'C', 'D', 'F', 'G', 'E',]
score = []

length = len(letters)

for score in range(length):
    if letters == ['A']:
        score = score + [4.0]
    elif letters == ['B']:
        score = score + [3.0]
    elif letters == ['C']:
        score = score + [2.0]
    elif letters == ['D']:
        score = score + [1.0]
    elif letters == ['F']:
        score = score + [0.0]


print(score)

這不是正確的方法,因為您對兩個不同的事物使用相同的變量名 ( source )。 您需要為迭代使用單獨的變量:

for i in range(length):
   if letters[i] == 'A':
      # do something

或直接從列表中調用變量,如下代碼:

for letter in letters:
    if letter == 'A':
        # do something

您已經重用了變量score - 一次作為列表,另一次在 for 循環中作為整數。

重命名其中之一。

Python for 循環需要一個“局部變量”作為列表中的每個元素。 這將我帶到第二點:如果您只是使用 for 循環遍歷列表,那么您不需要將該列表的長度存儲在變量中並使用range(length) 事實上,你應該這樣做,因為score只是一個從 0(除非另有說明)到列表長度的數字。

一種更簡化的迭代 python 列表的方法:

for letter in letters:
   if letter == 'A':
      score += 4.0

依此類推……我建議您仔細閱讀 Python 列表(基本上是具有更多內置功能的數組)及其基本操作和語法。

如果您想使用更傳統的數組語法來做到這一點:

for i in range(length):
   if letters[i] == 'A':
      score += 4.0
letters = ['A', 'B' ,'C', 'D', 'G', 'E']
score = []

length = len(letters)

for score in range(length):
  if 'A' in letters:
    score = 4.0
  if 'B' in letters:
    score = score + 3.0
  if 'C' in letters:
    score = score + 2.0
  if 'D' in letters:
    score = score + 1.0
  if 'F' in letters:
    score = score + 0.0

print(score)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM