Trong Python, một giá trị là thông tin được lưu trữ trong một đối tượng nhất định. Gặp phải ValueError trong Python có nghĩa là nội dung của đối tượng mà bạn đã cố gắng gán giá trị cho có vấn đề
Điều này không bị nhầm lẫn với các loại trong Python. Ví dụ, hãy tưởng tượng bạn có một con chó và bạn cố gắng thả nó vào bể cá. Đây sẽ là một ví dụ về lỗi loại, bởi vì động vật thuộc loại 'chó' chắc chắn không giống với động vật thuộc loại 'cá'
Mặt khác, hãy tưởng tượng chúng ta cố gắng nhốt Great Dane vào cũi của Chihuahua. Đây sẽ là một vấn đề với giá trị của con chó, bởi vì mặc dù cả hai đều thuộc loại 'chó', nhưng cũi của Chihuahua sẽ không thể chấp nhận một con chó có kích thước như Great Dane
Để thấy điều này rõ ràng hơn trong Python, hãy lưu ý các ví dụ sau
>>> int[5.6754]
hình. 1. Chuyển đổi int hợp lệ
5
Kể từ ngày float
5. 6754 là dữ liệu số, Python có thể chuyển đổi nó thành số nguyên. Tuy nhiên, những điều sau đây sẽ không hoạt động tốt
>>> int["dog"]
Hình. 2. Chuyển đổi int hoàn toàn không hợp lệ
Traceback [most recent call last]:
File "", line 1, in
ValueError: invalid literal for int[] with base 10: 'dog'
Trong PyLearn, chúng ta sẽ thấy thông báo sau
>>> int["dog"]
Hình. 3. Thông điệp tương tự, kiểu PyLearn
ValueError: int[] cannot convert 'dog' into an integer.
Bất cứ khi nào bạn muốn chuyển đổi loại đối tượng, bạn cần đảm bảo rằng giá trị được liên kết với đối tượng đó là giá trị hợp lệ
Các lỗi giá trị khác trong Python
Bạn cũng có thể kích hoạt ValueError trong Python khi cố gắng thực hiện một thao tác trên một giá trị không tồn tại. Chẳng hạn, hãy tưởng tượng ví dụ sau
>>> myVar = 5
>>> list = []
>>> list.remove[myVar]
Traceback [most recent call last]:
File "", line 1, in
ValueError: list.remove[x]: x not in list
Trong ví dụ này, chúng tôi xác định một biến 'myVar' có giá trị 5. Sau đó, chúng tôi sẽ cố gắng xóa giá trị này khỏi danh sách không chứa giá trị đó. Vì 5 không có trong danh sách nên chúng tôi không thể xóa nó và Python trả về lỗi giá trị
Ngoài ra, bạn cũng có thể tăng ValueError trong Python nếu bạn cố gắng 'giải nén' nhiều giá trị hơn mức bạn có. Ví dụ
>>> a, b, c, d = [3, 4, 5]
Traceback [most recent call last]:
File "", line 1, in
ValueError: need more than 3 values to unpack
Điều này trả về lỗi giá trị, vì có quá ít giá trị ở phía bên tay phải để Python có thể 'giải nén'. ’ Khi Python cố gắng gán ‘d’ cho một giá trị ở phía bên tay phải, nó không thể tìm thấy bất kỳ giá trị nào phù hợp với ‘unpack’ và do đó ném ra một lỗi ValueError
Tạo tệp Python với tập lệnh sau sẽ tăng ValueError trong đó hàm int[] đã được sử dụng để chuyển đổi giá trị chuỗi
#Xác định biến đầu tiên
số1 = 100
#
number2 = int['Hello']
#Print the sum of two variables
print[number1 + number2]
đầu ra
Đầu ra sau sẽ xuất hiện sau khi thực hiện đoạn mã trên. Đầu ra cho thấy rằng ValueError đã xảy ra ở dòng số 4 trong đó hàm int[] đã được sử dụng để chuyển đổi chuỗi, 'Xin chào'
Ví dụ-2. Xử lý ValueError bằng cách sử dụng Try-Except Block
Tạo tệp Python với tập lệnh sau sẽ lấy giá trị tuổi từ người dùng. Nếu một giá trị không phải là số sẽ được lấy từ người dùng cho giá trị tuổi, thì khối thử sẽ đưa ra ngoại lệ ValueError và in thông báo lỗi tùy chỉnh. Nếu giá trị tuổi hợp lệ sẽ được lấy từ người dùng, thì thông báo sẽ được in dựa trên giá trị tuổi
thử .
#Lấy giá trị số từ người dùng
tuổi = int[input["Enter your age: "]]
'''
Check the number is greater than or equal to 25
and less than or equal to 55
'''
if age >= 35 and age 0:
in["Số dương"]
else:
in["Số âm"]
except ValueError as e:
#In thông báo lỗi từ hàm
in["Error inside the function: ", e ]
nâng cao .
try:
#Lấy thông tin đầu vào từ người dùng
num = input["Enter a number a value: "]
#Gọi hàm
Kiểm tra [num]
except ValueError as e:
#In thông báo lỗi
in["Error outside the function: ", đ ]
đầu ra
Đầu ra sau sẽ xuất hiện sau khi thực thi đoạn mã trên với các giá trị đầu vào là 6, -3 và 'd'. Ở đây, ValueError đã xảy ra bên trong và bên ngoài hàm đối với giá trị đầu vào, 'd'
Ví dụ-5. Sử dụng ValueError với lỗi khác
Tạo tệp Python với tập lệnh sau sẽ mở tệp để đọc và in nội dung của tệp. Nếu tên tệp đã được sử dụng trong tập lệnh không thể truy cập được, IOError sẽ được tạo và nếu tệp chứa bất kỳ ký tự chữ cái nào, thì ValueError sẽ được tạo
thử .
#Mở tệp để đọc
fh = open['sales.txt']
#Xác định vòng lặp while để đọc tệp theo từng dòng
< . while fh:
#Chuyển đổi dòng thành số nguyên
giá trị = int[fh.đường đọc[]]
< . #Print the value
print[value]
except [ValueError, IOError]:
'''
In thông báo lỗi nếu tệp
Không thể đọc . "
any string data
'''
print["ValueError or IOError has occurred."]
đầu ra
Đầu ra sau sẽ xuất hiện sau khi thực hiện đoạn mã trên. Ở đây, ValueError đã được tạo ra vì doanh số. txt chứa các ký tự chữ cái ở dòng số 6
Ví dụ-6. Sử dụng ValueError với Đối số dòng lệnh
Tạo một tệp Python với tập lệnh sau sẽ lấy một số từ giá trị đối số dòng lệnh. Thông báo cụ thể sẽ được in nếu giá trị số được cung cấp trong đối số dòng lệnh, nếu không, ValueError sẽ được tạo và thông báo lỗi sẽ được in
#Nhập mô-đun sys
nhập sys
thử .
#Kiểm tra số đối số
if len[sys.argv] > 1 .
#Chuyển đổi giá trị đối số thành số nguyên
num = int[sys.argv[1]] .
#Check the number is greater than or equal to 100
if num >= 100:
in["Bạn phải nhập một số nhỏ hơn 100. "]
khác .
in["Số đã nhập là %d" % num]
else:
in["Không có giá trị đối số nào được đưa ra. "]
ngoại trừ Lỗi giá trị .
#In thông báo cho ValueError
in["You have to type a number"]
finally:
#In thông báo kết thúc
in["The program is terminated."]
đầu ra
Đầu ra sau sẽ xuất hiện sau khi thực thi tập lệnh trên khi tập lệnh được thực thi mà không có bất kỳ đối số nào, với các giá trị đối số 600 và 60
Phần kết luận
Mục đích của việc sử dụng ngoại lệ ValueError đã được trình bày trong hướng dẫn này bằng cách sử dụng nhiều ví dụ để giúp người dùng Python biết cách sử dụng ngoại lệ này đúng cách