簡體   English   中英

ValueError:需要多於1個值才能解壓縮

[英]ValueError: need more than 1 value to unpack

好的,我知道這個話題已被多次解決,但我所看到的都沒有幫助我。 我在標題中收到錯誤,我不確定如何修復錯誤。 這是我的代碼:

def loadRecords():
    f = open("stu.txt", "r")
    students = f.readlines()
    f.close()
    return students

def addStudent():
    n = input("Enter student's name: ")
    ex1 = input("Enter Exam 1 grade: ")
    ex2 = input("Enter Exam 2 grade: ")
    ex3 = input("Enter Exam 3 grade: ")
    return n + " " + ex1 + " " + ex2 + " " + ex3 + "\n"

def displayStudents(students):
    for record in students:
        n, ex1, ex2, ex3 = record.split(",")
        ex1 = int(ex1)
        ex2 = int(ex2)
        ex3 = int(ex3)
        print("%-10s %5s    %5s    %5s" % (n, ex1, ex2, ex3))

def displayAvg(students):
    n = 1
    for record in students:
        n, ex1, ex2, ex3 = record.split(",")
        ex1 = int(ex1)
        ex2 = int(ex2)
        ex3 = int(ex3)
        avg = (ex1 + ex2 + ex3) / 3
        print("%-10s %5s" % (n, round(avg, 1)))
    n += 1

def saveRecords(students):
    f = open("stu.txt", "w")
    f.writelines(students)
    f.close

def main():
    students = loadRecords()

    while True:
        print("""                         
 Program Options. 
    1.) Display all contacts 
    2.) Create new contact
    3.) Display Averages
    4.) Save and exit 
    """)
        option = input("Enter 1, 2, or 3: ")
        print()

        if option == "1":
            displayStudents(students)
        elif option == "2":
            newRecord = addStudent()
            students.append(newRecord)
        elif option == "3":
            displayAvg(students)
        elif option == "4":
            saveRecords(students)
            break
        else:
            print("Not happening")

main()

這是收到的錯誤:

Traceback (most recent call last):
  File "C:/Python33/Program 4/pro4.py", line 65, in <module>
    main()
  File "C:/Python33/Program 4/pro4.py", line 53, in main
    displayStudents(students)
  File "C:/Python33/Program 4/pro4.py", line 16, in displayStudents
    n, ex1, ex2, ex3 = record.split(",")
ValueError: need more than 1 value to unpack

這是我正在使用的文件,如果你想運行代碼,請使用記事本。

sam wilson,98,80,73
sue green,92,98,74
sue adams,89,89,92
ron harris,90,87,100
linda tyler,76,72,88
dave smith,72,91,75
steve davis,88,92,84

您的文件中可能至少有一個行(通常是最后一行); 明確測試:

for record in students:
    if not record.strip():
        continue
    n, ex1, ex2, ex3 = record.split(",")

您可能希望查看csv模塊以讀取您的學生記錄; 你仍然需要跳過空行,但是為你處理了逗號分裂。

暫無
暫無

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

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