01/10/2018, 00:22

Lỗi ValueError: not enough values to unpack (expected 4, got 3)

Chào các bạn,

Mình là dân ngoại đạo, mới tập lập trình Python (mình dùng bản 3.5) , đang học qua quyển Learn Python The Hard Way, tới bài tập số 13 thì mình gặp lỗi và không làm tiếp được.

Câu lệnh đây:

from sys import argv

script , first, second, third = argv

print (" the name of the script is:", script)
print ("the first variable is:", first)
print ("the second variable is:", second)
print ("the third variable is:", third) 

Kết quả trả về là:

from sys import argv

script , first, second, third = argv

print (" the name of the script is:", script)
print ("the first variable is:", first)
print ("the second variable is:", second)
print ("the third variable is:", third)
Traceback (most recent call last):

  File "<ipython-input-1-d64392378067>", line 3, in <module>
    script , first, second, third = argv

ValueError: not enough values to unpack (expected 4, got 3)

Mình đã cố gắng đọc trên mạng, các trang tiếng Anh nhưng vẫn không thấy cách giải quyết.
Thật sự mình đang khá là lo, mong được sự gúp đỡ của các tiền bối đi trước.

Cảm ơn

Minh Hoàng viết 02:34 ngày 01/10/2018

Đây là do thiếu tham số, bạn cho mình xem tham số bạn nhập vào đi

Khoa NTA viết 02:22 ngày 01/10/2018

sys.argv là 1 list “động” chứa parameters bạn đưa vào chương trình với tham số đầu tiên luôn là đường dẫn của file thực thi. Để test file này thì bạn chỉ cần nhập chính xác 3 parameters là xong. Lý do phải là 3 vì bạn đang muốn unpack 1 list cho ra 4 biến nhưng đã có 1 biến cố định thì 4 - 1 = 3, đúng không nào?
Ví dụ file của bạn tên là test.py, chạy: python test.py tham_so_1 "tham so 2" 3 và vấn đề đã xong. Bạn có thể đổi tham_so_1, "tham so 2", 3 tùy thích :3

Lộc Lê viết 02:37 ngày 01/10/2018

Mình đã khắc phục được rồi nha.
Lỗi của mình là do mình chạy file trong Anaconda, nên mình không nhập thêm được gì.
Sau khi chạy trên nền bằng PowerShell, mình nhập thêm python .\phanmem2.py first 2nd 3rd thì đã ra được kết quả rồi.

PS C:\Users\HP\.ipython> python .\phanmem2.py first 2nd 3rd
The script is called: .\phanmem2.py
Your first variable is: first
Your second variable is: 2nd
Your third variable is: 3rd

Cảm ơn các bạn nhiều nha

Tô Nhựt viết 16:06 ngày 15/08/2021

Ai giải thích giúp mình với ạ?

Bài liên quan
0