Lỗi giá trị và lỗi loại trong python

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]
5
hình. 1. Chuyển đổi int hợp lệ

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"]
Traceback [most recent call last]:
  File "", line 1, in
ValueError: invalid literal for int[] with base 10: 'dog'
Hình. 2. Chuyển đổi int hoàn toàn không hợp lệ

Trong PyLearn, chúng ta sẽ thấy thông báo sau

>>> int["dog"]
ValueError: int[] cannot convert 'dog' into an integer.
Hình. 3. Thông điệp tương tự, kiểu PyLearn

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

Lỗi giá trị trong Python là gì?

Lỗi ValueError trong Python là một ngoại lệ xảy ra khi một hàm nhận được đối số thuộc loại dữ liệu chính xác nhưng lại nhận được giá trị không phù hợp . Lỗi này thường xảy ra trong các phép toán yêu cầu một loại giá trị nhất định.

Sự khác biệt giữa lỗi giá trị và lỗi loại là gì?

TypeError xảy ra khi một thao tác hoặc chức năng được áp dụng cho một đối tượng thuộc loại không phù hợp. ValueError xảy ra khi một thao tác hoặc hàm tích hợp nhận được một đối số có loại phù hợp nhưng giá trị không phù hợp và tình huống không được mô tả bằng một ngoại lệ chính xác hơn, chẳng hạn như IndexError

3 loại lỗi trong Python là gì?

Có ba loại lỗi chính có thể phân biệt được trong Python. lỗi cú pháp, ngoại lệ và lỗi logic .

Lỗi loại trong Python là gì?

Lỗi loại Python là một ngoại lệ xảy ra khi kiểu dữ liệu của một đối tượng trong một thao tác không phù hợp . Điều này có thể xảy ra khi một thao tác được thực hiện trên một đối tượng thuộc loại không chính xác hoặc nó không được hỗ trợ cho đối tượng.

Chủ Đề