文本檔案的格式如下:藝術家、標題、流派、播放長度、條件、庫存、成本
文本檔案包含許多流派的記錄,我需要將它們添加到字典中并計算有多少。
這是我的代碼但是當我運行它時,它為每個流派回傳 0
def count_genres():
file = open("RECORD_DATA.txt", 'r')
rock = 0
classical = 0
pop = 0
jazz = 0
spoken_word = 0
for row in file:
if not row[0] == "#":
row = row.rstrip()
row = row.split(",")
genre = str(row[2])
if genre == "Rock":
rock = 1
elif genre == "Classical":
classical = 1
elif genre == "Pop":
pop = 1
elif genre == "Jazz":
jazz = 1
elif genre == "Spoken Word":
spoken_word = 1
print("Amount of Records in each genre ")
print("Rock: ", rock)
print("Classical: ", classical)
print("Pop: ", pop)
print("Jazz: ", jazz)
print("Spoken Word: ", spoken_word)
uj5u.com熱心網友回復:
如果型別不是串列中的型別之一(例如,如果大小寫錯誤),您的功能將無聲地失敗。試試這個實作:
def count_genres():
genres = {genre: 0 for genre in(
"Rock", "Classical", "Pop", "Jazz", "Spoken Word"
)}
with open("RECORD_DATA.txt") as file:
for row in file:
row = row.rstrip()
if not row or row[0] == "#":
continue
genres[row.split(",")[2]] = 1
print("Amount of Records in each genre ")
for genre, count in genres.items():
print(f"{genre}: {count}")
如果檔案格式如您所說,這應該可以正常作業,但KeyError如果遇到不在串列中的型別,它會引發 a 。如果發生這種情況,您可以從那里決定如何糾正它。
uj5u.com熱心網友回復:
你應該試試
with open("RECORD_DATA.txt", 'r') as file:
for row in file:
....
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/373900.html
