Kiểm tra số Python

thật đáng kinh ngạc khi thấy một cuộc thảo luận sôi nổi như vậy đang diễn ra khi một câu hỏi cơ bản, hợp lệ và, tôi tin rằng, trần tục như vậy đang được hỏi

một số người đã chỉ ra rằng việc kiểm tra loại đối với int [và long] có thể bỏ qua các trường hợp gặp phải số thập phân lớn. khá đúng

một số người đã chỉ ra rằng bạn nên 'chỉ làm x + 1 và xem liệu điều đó có thất bại không. tốt, đối với một điều, điều này cũng hoạt động trên float, và mặt khác, thật dễ dàng để xây dựng một lớp chắc chắn không phải là số, nhưng lại định nghĩa toán tử + theo một cách nào đó

tôi không hài lòng với nhiều bài viết tuyên bố mạnh mẽ rằng bạn không nên kiểm tra các loại. Chà, GvR đã từng nói điều gì đó về mặt lý thuyết thuần túy, điều đó có thể đúng, nhưng trên thực tế, isinstance thường phục vụ một mục đích hữu ích [đó là một thời gian trước đây, không có liên kết; bạn có thể đọc những gì GvR nói về những gì liên quan

điều buồn cười là có bao nhiêu người dường như cho rằng ý định của OP là kiểm tra xem loại của một số x đã cho có phải là một loại số nguyên hay không—điều tôi hiểu là ý nghĩa thông thường của tôi khi sử dụng các từ của OP. liệu x có đại diện cho một số nguyên không. và điều này có thể rất quan trọng. chẳng hạn như hỏi ai đó họ muốn chọn bao nhiêu mặt hàng, bạn có thể muốn kiểm tra xem bạn có nhận lại được số nguyên không âm không. trường hợp sử dụng như thế này rất nhiều

Theo ý kiến ​​của tôi, điều quan trọng là phải thấy rằng [1] kiểm tra kiểu chỉ là MỘT—và thường khá thô sơ—đo lường tính chính xác của chương trình, bởi vì [2] các giá trị giới hạn thường có ý nghĩa và các giá trị ngoài giới hạn . đôi khi chỉ một số giá trị không liên tục có ý nghĩa—chẳng hạn như xem xét tất cả các số, chỉ những số nguyên thực [không phức tạp], có thể có trong một trường hợp nhất định

buồn cười là dường như không ai đề cập đến việc kiểm tra ________ 10. nếu điều đó gây ra lỗi với một số lớp thập phân lớn, thì có lẽ đã đến lúc suy nghĩ lại về các mô hình OOP. cũng có PEP 357 xem xét cách sử dụng các giá trị không-rất-rõ-ràng-int-nhưng-chắc-là-số-nguyên để được sử dụng làm chỉ số danh sách. không chắc liệu tôi có thích giải pháp này không

>>> numstr = '100' #numeric digits
>>> numstr.isnumeric[]
True
>>> numstr = '\u0034' # \u0034 is 4
>>> numstr.isnumeric[]
True
>>> numstr = '\u00BD' # \u0024 is ½
>>> str.isnumeric[]
True
>>> numstr = '¾' 
>>> numstr.isnumeric[]
True
2 kiểm tra xem tất cả các ký tự của chuỗi có phải là ký tự số hay không. Nó sẽ trả về True nếu tất cả các ký tự là số và sẽ trả về Sai ngay cả khi một ký tự không phải là số

Các ký tự số bao gồm các chữ số [0 đến 9] và giá trị số Unicode và phân số e. g. 'U+00B9', '½', v.v.

cú pháp

str.isnumeric[]

Thông số

Không có

Giá trị trả về

Giá trị Boolean Đúng hay Sai

Ví dụ sau kiểm tra chuỗi số

Ví dụ. số không []

Sao chép

>>> numstr = '100' #numeric digits
>>> numstr.isnumeric[]
True
>>> numstr = '\u0034' # \u0034 is 4
>>> numstr.isnumeric[]
True
>>> numstr = '\u00BD' # \u0024 is ½
>>> str.isnumeric[]
True
>>> numstr = '¾' 
>>> numstr.isnumeric[]
True

Trong ví dụ trên, hàm

>>> numstr = '100' #numeric digits
>>> numstr.isnumeric[]
True
>>> numstr = '\u0034' # \u0034 is 4
>>> numstr.isnumeric[]
True
>>> numstr = '\u00BD' # \u0024 is ½
>>> str.isnumeric[]
True
>>> numstr = '¾' 
>>> numstr.isnumeric[]
True
3 trả về True cho tất cả các giá trị số, Unicode cho số và phân số thô tục chẳng hạn như 100, ½, '\u00BD', v.v.

Phương thức

>>> numstr = '100' #numeric digits
>>> numstr.isnumeric[]
True
>>> numstr = '\u0034' # \u0034 is 4
>>> numstr.isnumeric[]
True
>>> numstr = '\u00BD' # \u0024 is ½
>>> str.isnumeric[]
True
>>> numstr = '¾' 
>>> numstr.isnumeric[]
True
3 trả về false nếu gặp phải một bảng chữ cái, ký hiệu hoặc một chuỗi rỗng, như hình bên dưới

Ví dụ

Sao chép

>>> str = '1A'                                                                          
>>> str.isnumeric[]
False
>>> str = '1.1'                                                                          
>>> str.isnumeric[]
False
>>> str = ''                                                   
>>>str.isnumeric[]
False
>>> str = '#1'                                                   
>>>str.isnumeric[]
False
>>> str = '$100'                                                   
>>>str.isnumeric[]
False

Bảng sau đây liệt kê sự khác biệt giữa các phương thức isdecimal[], isdigit[] và

>>> numstr = '100' #numeric digits
>>> numstr.isnumeric[]
True
>>> numstr = '\u0034' # \u0034 is 4
>>> numstr.isnumeric[]
True
>>> numstr = '\u00BD' # \u0024 is ½
>>> str.isnumeric[]
True
>>> numstr = '¾' 
>>> numstr.isnumeric[]
True
3 dựa trên các đầu vào đã cho

Chuỗi đầu vào Valueisdecimal[]isdigit[]isnumeric[]'123'TrueTrueTrue'$123'FalseFalseFalse'123. 50'SaiSaiSaiSai'123a'SaiSaiSaiSai'¾'SaiFalseTrue'\u0034'TrueTrueTrue

Khi làm dự án, chúng ta thường cần xác định xem một chuỗi Python cụ thể có phải là số nguyên hay không. Do đó, bạn sẽ tìm hiểu về ba cách điển hình để xác minh xem một chuỗi python đã cho có phải là số nguyên hay không trong bài viết này. Vì vậy, không mất nhiều thời gian, chúng ta hãy đi ngay vào các ví dụ khác nhau để kiểm tra xem một chuỗi có phải là số nguyên trong Python không

ví dụ 1

Chúng tôi đã sử dụng phương thức isnumeric[] của Python để xác định xem một chuỗi có phải là số nguyên hay không trong ví dụ này. Hàm innumeric[] được tích hợp sẵn. Nó trả về True nếu tất cả các ký tự là số; . Phương thức isnumeric[] không yêu cầu bất kỳ tham số nào, do đó chuỗi. isnumeric[] là cú pháp. Trong ví dụ đầu tiên của chúng tôi, chúng tôi đã sử dụng phương thức isnumeric[] để xác minh xem một chuỗi có phải là số nguyên theo ba cách khác nhau hay không. Chúng tôi đã tạo và khai báo một chuỗi 'a' với giá trị '95644' trong ví dụ đầu tiên

Phương thức isnumeric[] sau đó được sử dụng để xác định xem '95644' có phải là số nguyên hay không. Bởi vì nó là một số nguyên trong ví dụ này, nên nó trả về 'True. ' một lần nữa chúng ta đã sử dụng một biến 'a' tương tự như biến đầu tiên, ngoại trừ việc thay vì khai báo một giá trị số nguyên, chúng ta đã hợp nhất các giá trị số nguyên và chuỗi. Phương thức isnumeric[] sẽ trả về Sai trong trường hợp này

Cuối cùng, chúng tôi đã thêm một số giai đoạn bổ sung bằng cách kết hợp các hàm if-else và isnumeric[]. Biến 'a' của chúng ta đã được khai báo và khởi tạo với giá trị '6581'. Sau đó, bằng cách sử dụng hàm isnumeric[] và hướng dẫn điều khiển luồng, chúng tôi đã xác định chuỗi đã cho có phải là số nguyên hay không. Nó là một số nguyên trong trường hợp này. Kết quả là, chúng ta sẽ nhận được một đầu ra số nguyên. Kết quả sẽ là 'Không phải là số nguyên' nếu giá trị không phải là số nguyên trong bất kỳ trường hợp nào khác

a ='95644'

in[a.là số[]]

a . ='program185'

print[a.là số[]]

a . ='6581'

if a.là số[] .

    in['Số nguyên' .

else:

    in['Không phải số nguyên']

Khi chúng tôi chạy mã được trích dẫn trong hình trên, chúng tôi nhận được kết quả được thêm vào sau

ví dụ 2

Sử dụng cơ chế xử lý ngoại lệ trong Python, chúng ta có thể kiểm tra chuỗi có phải là số nguyên hay không. Nếu bạn không quen với cách Python xử lý các ngoại lệ, đây là tóm tắt nhanh. Có thể dễ dàng quản lý các ngoại lệ trong Python bằng câu lệnh try. Mệnh đề try chứa thủ tục quan trọng có thể dẫn đến loại trừ. Mệnh đề except xử lý các ngoại lệ. Do đó, sau khi chúng tôi phát hiện ra loại trừ, chúng tôi có thể chọn thao tác nào sẽ thực hiện

Bạn có thể hiểu cách thức hoạt động của phương pháp này với một ví dụ. Chúng tôi đã tạo một chuỗi 'a' với giá trị '651ab'. Thoạt nhìn, giá trị của chuỗi 'a' có vẻ là một số nguyên. Kết quả là, chúng tôi tuyên bố nó là chính xác. Sau đó, chúng tôi đã chuyển đổi một chuỗi thành một số nguyên bằng phương thức int. Nếu chuỗi 'a' chứa các ký tự không phải là số, 'int' sẽ đưa ra ValueError cho biết chuỗi không phải là số nguyên và ngược lại. Chúng tôi cũng đã sử dụng các câu lệnh điều khiển luồng để in kết quả cùng với hệ thống xử lý ngoại lệ

a ='651ab'

isInt =True

try:

    int[ a ]< .

except ValueError:

    isInt =Sai

if isInt.

    in['Số nguyên' .

else:

    in['Không phải là số nguyên']

Để xem kết quả, hãy lưu và chạy mã

ví dụ 3

Hãy cùng xem một ví dụ về cách thức hoạt động của phương pháp này. Hàm isdigit[] không có bất kỳ tham số nào. Trong ví dụ thứ ba của chúng tôi, chúng tôi đã trích xuất dữ liệu từ một chuỗi và lưu nó vào biến 'my_str. ’ Sau đó, chúng ta kiểm tra xem văn bản nhập vào có phải là số nguyên hay không bằng cách sử dụng các lệnh điều khiển và hàm isdigit[]

my_str =đầu vào["Vui lòng chèn giá trị. "]

if my_str. isdigit[] .

    in["Số nguyên" .

else:

    in ["Không phải là số nguyên"]

Khi thực thi đoạn mã trên, bạn sẽ nhận được đầu ra sau

Ghi chú. Chỉ các số nguyên dương mới hoạt động với phương thức isdigit[]. tôi. e. , mọi số float sẽ được coi là một chuỗi nếu được thông qua. Nó không chấp nhận bất kỳ tham số nào, do đó việc truyền một tham số sẽ dẫn đến lỗi

Phần kết luận

Bây giờ bạn đã biết nhiều cách khác nhau để kiểm tra xem một chuỗi trong Python có phải là số nguyên không. Kỹ thuật đơn giản nhất để kiểm tra xem một chuỗi có phải là số nguyên trong Python hay không được xác định theo yêu cầu của bạn và loại dự án bạn đang thực hiện

Chủ Đề