[英]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.