Isdigit có hoạt động đối với số âm python không?

Omg lol thật đơn giản, cảm ơn rất nhiều. Tuy nhiên, tôi cũng phải hoán đổi các câu lệnh if của mình vì câu lệnh hoặc cho dấu - đều đúng trong cả hai trường hợp và có xu hướng chỉ xuất câu lệnh if đầu tiên

Bạn có thể chuyển văn bản sang kiểu int và xem liệu bạn có lấy lại được gì không hoặc bạn có thể khớp mẫu với biểu thức chính quy

# ' ' [space] is not a digit
In [8]: ' 102030'.isdigit[]
Out[8]: False
4

^ start of input
$ end of input
? zero or one [optional]
+ one or more
* zero or more
[] any of the things in there, can contain ranges like a-z

Bạn cũng có thể viết logic của riêng mình để kiểm tra chuỗi, chẳng hạn như bạn sẽ kiểm tra xem ký tự đầu tiên [nếu nó tồn tại] là + hay - [hoặc không] và sau đó xem phần còn lại có phải chỉ là một trong 0…9

Đừng mong đợi các giải pháp hoàn thiện tồn tại. Dù đó là gì, hãy chia nhỏ nó thành những phần nhỏ hơn cho đến khi bạn đạt đến điểm mà bạn biết điều gì đó có thể giải quyết vấn đề đó và soạn những phần đó [viết mã] để tạo ra hành động tổng thể mà bạn đang tìm kiếm

Phương thức isdigit[] trong lớp String của Python dùng để kiểm tra xem tất cả các ký tự trong chuỗi có phải là chữ số hay không

Phương thức isdigit[] trả về true nếu tất cả các ký tự trong chuỗi là chữ số và có ít nhất một ký tự, ngược lại là false. Phương thức này chỉ hoạt động đối với các số nguyên dương, không dấu và đối với các chỉ số trên hoặc chỉ số dưới được truyền dưới dạng ký tự unicode

Các ví dụ về phương thức isdigit trong Python

1. Sử dụng phương thức isdigit[] để kiểm tra xem tất cả các ký tự có phải là chữ số hay không

str = '456'
print[str]
print[str.isdigit[]]

str = 'A12'
print[str]
print[str.isdigit[]]

đầu ra

456
True
A12
False

2. Sử dụng phương thức isdigit[] với chỉ số trên hoặc chỉ số dưới. Đối với các chuỗi như vậy phương thức isdigit[] trả về true

str = '2\u2076'
print[str]
print[str.isdigit[]]

str = '4\u2082'
print[str]
print[str.isdigit[]]

đầu ra

26
True
42
True

3. Sử dụng phương thức isdigit[] với số âm hoặc số thập phân. Đối với các chuỗi như vậy phương thức isdigit[] trả về false

str = '2.45'
print[str]
print[str.isdigit[]]

str = '-12'
print[str]
print[str.isdigit[]]

đầu ra

2.45
False
-12
False

4- Để kiểm tra số âm hoặc số thập phân bằng phương thức isdigit[] của Python, bạn cần bỏ dấu trừ hoặc ký tự thập phân trước khi kiểm tra

Sử dụng phương thức lstrip[] bạn có thể xóa các ký tự đầu được chỉ định [được sử dụng để xóa dấu '-' ở đây]

Sử dụng phương thức thay thế [] bạn có thể thay thế ký tự thập phân [thay thế số thập phân không có khoảng trắng ở đây]

str = '-12'
print[str.lstrip['-'].replace['.', '', 1].isdigit[]]
print[str]

str = '2.45'
print[str.lstrip['-'].replace['.', '', 1].isdigit[]]
print[str]

str = '-0.657'
print[str.lstrip['-'].replace['.', '', 1].isdigit[]]
print[str]

đầu ra

________số 8

Vì Chuỗi là bất biến trong Python nên chuỗi gốc không thay đổi

Đó là tất cả cho chủ đề này Phương thức chuỗi isdigit[] của Python. Nếu bạn có bất kỳ nghi ngờ hoặc bất kỳ đề xuất nào để thực hiện, vui lòng gửi bình luận. Cảm ơn

Hướng dẫn chuyên sâu về cách sử dụng isdigit[], isdecimal[] và isnumeric[] bằng cách hiểu sự khác biệt giữa chúng

Miguel Brito

·Ngày 18 tháng 9 năm 2021·8 phút đọc

Theo dõi bản tin của tôi và không bao giờ bỏ lỡ các bài viết sắp tới của tôi

Đặt mua

Chơi bài viết này

Trình duyệt của bạn không hỗ trợ phần tử âm thanh. TỐC ĐỘ1X

Trong bài đăng này, bạn sẽ tìm hiểu sự khác biệt tinh tế giữa

# ' ' [space] is not a digit
In [8]: ' 102030'.isdigit[]
Out[8]: False
8,
# ' ' [space] is not a digit
In [8]: ' 102030'.isdigit[]
Out[8]: False
9 và
str = '456'
print[str]
print[str.isdigit[]]

str = 'A12'
print[str]
print[str.isdigit[]]
10 trong Python 3 và cách chọn cái tốt nhất cho công việc

Khi xử lý các chuỗi, thường bằng cách đọc chúng từ một số nguồn, bạn có thể muốn kiểm tra xem chuỗi đã cho có phải là một số không. Lớp chuỗi [

str = '456'
print[str]
print[str.isdigit[]]

str = 'A12'
print[str]
print[str.isdigit[]]
11] đi kèm với 3 phương thức khác nhau mà bạn có thể sử dụng cho mục đích đó

Mỗi trong số chúng đều có ưu và nhược điểm và việc phân biệt sự khác biệt giữa chúng sẽ giúp bạn tiết kiệm rất nhiều thời gian phát triển và gỡ lỗi

Trong bài viết này, bạn sẽ

  • tìm hiểu những gì
    str = '456'
    print[str]
    print[str.isdigit[]]
    
    str = 'A12'
    print[str]
    print[str.isdigit[]]
    
    12,
    str = '456'
    print[str]
    print[str.isdigit[]]
    
    str = 'A12'
    print[str]
    print[str.isdigit[]]
    
    13 và
    str = '456'
    print[str]
    print[str.isdigit[]]
    
    str = 'A12'
    print[str]
    print[str.isdigit[]]
    
    14 làm, những hạn chế của chúng, cách sử dụng chúng và khi nào bạn nên sử dụng chúng
  • hiểu sự khác biệt giữa
    str = '456'
    print[str]
    print[str.isdigit[]]
    
    str = 'A12'
    print[str]
    print[str.isdigit[]]
    
    15 so với
    str = '456'
    print[str]
    print[str.isdigit[]]
    
    str = 'A12'
    print[str]
    print[str.isdigit[]]
    
    16 so với
    str = '456'
    print[str]
    print[str.isdigit[]]
    
    str = 'A12'
    print[str]
    print[str.isdigit[]]
    
    17
  • hiểu tại sao
    str = '456'
    print[str]
    print[str.isdigit[]]
    
    str = 'A12'
    print[str]
    print[str.isdigit[]]
    
    15,
    str = '456'
    print[str]
    print[str.isdigit[]]
    
    str = 'A12'
    print[str]
    print[str.isdigit[]]
    
    16, hoặc
    str = '456'
    print[str]
    print[str.isdigit[]]
    
    str = 'A12'
    print[str]
    print[str.isdigit[]]
    
    17 không hiệu quả với bạn
  • cách giải quyết các vấn đề phổ biến không thể giải quyết dễ dàng với chúng, chẳng hạn như
    • cách đảm bảo chuỗi số float là chữ số
    • cách sử dụng
      str = '456'
      print[str]
      print[str.isdigit[]]
      
      str = 'A12'
      print[str]
      print[str.isdigit[]]
      
      15,______116 hoặc
      str = '456'
      print[str]
      print[str.isdigit[]]
      
      str = 'A12'
      print[str]
      print[str.isdigit[]]
      
      17 với số âm

Mục lục

  1. Cách thức hoạt động của
    456
    True
    A12
    False
    
    54 và khi nào nên sử dụng nó
  2. Cách thức hoạt động của
    456
    True
    A12
    False
    
    55 và khi nào nên sử dụng nó
  3. Cách thức hoạt động của
    456
    True
    A12
    False
    
    56 và khi nào nên sử dụng nó
  4. Giải quyết các vấn đề thường gặp

    4. 1. Làm cách nào để kiểm tra xem số float có phải là chữ số không?

    4. 2. Làm cách nào để kiểm tra xem số âm có phải là chữ số không?

    4. 3. Tại sao

    str = '456'
    print[str]
    print[str.isdigit[]]
    
    str = 'A12'
    print[str]
    print[str.isdigit[]]
    
    15 không hiệu quả với tôi?

  5. Sự kết luận

Cách thức hoạt động của
456
True
A12
False
54 và khi nào nên sử dụng nó

str = '456'
print[str]
print[str.isdigit[]]

str = 'A12'
print[str]
print[str.isdigit[]]
12 là lựa chọn rõ ràng nhất nếu bạn muốn xác định xem một chuỗi - hoặc một ký tự - có phải là một chữ số trong Python hay không

Theo tài liệu của nó, phương thức này trả về

str = '2\u2076'
print[str]
print[str.isdigit[]]

str = '4\u2082'
print[str]
print[str.isdigit[]]
10 nếu tất cả các ký tự trong chuỗi là chữ số và nó không trống, nếu không, nó sẽ trả về
str = '2\u2076'
print[str]
print[str.isdigit[]]

str = '4\u2082'
print[str]
print[str.isdigit[]]
11. Hãy xem một số ví dụ

str = '2\u2076'
print[str]
print[str.isdigit[]]

str = '4\u2082'
print[str]
print[str.isdigit[]]
3

Không như nhiều người nghĩ,

str = '456'
print[str]
print[str.isdigit[]]

str = 'A12'
print[str]
print[str.isdigit[]]
15 không phải là một hàm mà là một phương thức trong các lớp
str = '456'
print[str]
print[str.isdigit[]]

str = 'A12'
print[str]
print[str.isdigit[]]
11,
str = '2\u2076'
print[str]
print[str.isdigit[]]

str = '4\u2082'
print[str]
print[str.isdigit[]]
14 và
str = '2\u2076'
print[str]
print[str.isdigit[]]

str = '4\u2082'
print[str]
print[str.isdigit[]]
15

Điều này hoạt động tốt cho những trường hợp đơn giản này, nhưng điều gì xảy ra nếu một chuỗi có khoảng trắng?

# ' ' [space] is not a digit
In [8]: ' 102030'.isdigit[]
Out[8]: False

Điều này không thành công vì chuỗi chứa khoảng trắng ở đầu. Do đó, chúng tôi không thể sử dụng nó để đọc từ các nguồn chưa được xử lý, chẳng hạn như hàm

str = '2\u2076'
print[str]
print[str.isdigit[]]

str = '4\u2082'
print[str]
print[str.isdigit[]]
16. Bạn phải luôn nhớ xử lý trước đầu vào trước khi kiểm tra với
456
True
A12
False
54. Đó có thể là một trong những lý do khiến
str = '456'
print[str]
print[str.isdigit[]]

str = 'A12'
print[str]
print[str.isdigit[]]
15 không hiệu quả với bạn

str = '456'
print[str]
print[str.isdigit[]]

str = 'A12'
print[str]
print[str.isdigit[]]
1

Bất chấp hành vi nghiêm khắc này,

str = '456'
print[str]
print[str.isdigit[]]

str = 'A12'
print[str]
print[str.isdigit[]]
15 có một số vấn đề. Nếu chúng ta đọc kỹ tài liệu, nó nói rằng phương thức này cũng có thể xử lý "các chữ số chỉ số trên"

Chữ số bao gồm các ký tự thập phân và chữ số cần xử lý đặc biệt, chẳng hạn như chữ số chỉ số trên tương thích

Nhưng nó hoạt động như thế nào?

456
True
A12
False
5

Hóa ra nó làm. Bạn thực sự có thể sử dụng nó với

str = '2\u2076'
print[str]
print[str.isdigit[]]

str = '4\u2082'
print[str]
print[str.isdigit[]]
16

str = '2\u2076'
print[str]
print[str.isdigit[]]

str = '4\u2082'
print[str]
print[str.isdigit[]]
1

Mặc dù nó hoạt động tốt với các ký tự trên, nhưng nó không xử lý các ký tự phân số. Phương pháp này thực sự là về các chữ số đơn

26
True
42
True
8

Như chúng ta có thể thấy,

str = '456'
print[str]
print[str.isdigit[]]

str = 'A12'
print[str]
print[str.isdigit[]]
12 hoạt động rất tốt với các ký tự Unicode. Nếu chúng ta xem xét bộ thử nghiệm đơn vị cho phương pháp này, chúng ta có thể thấy một số trường hợp thử nghiệm thú vị

str = '2.45'
print[str]
print[str.isdigit[]]

str = '-12'
print[str]
print[str.isdigit[]]
0

Hình ảnh dưới đây cho thấy một số trường hợp thử nghiệm này

str. isdigit[] hoạt động rất tốt với Unicode số

Các ký tự Unicode không đại diện cho chữ số không được chấp nhận

Tóm tắt những gì
str = '456'
print[str]
print[str.isdigit[]]

str = 'A12'
print[str]
print[str.isdigit[]]
15 không thể làm

Nó có thể xử lý khoảng trắng?

Không

Nó có thể xử lý hệ thập lục phân không?

Không

Liệu nó tăng ngoại lệ?

Không

Nó có chấp nhận chữ số âm [có dấu trừ] không?

Không

Khi nào nên sử dụng nó?

Sử dụng

# ' ' [space] is not a digit
In [8]: ' 102030'.isdigit[]
Out[8]: False
8 khi bạn muốn xác minh rằng mỗi và mọi ký tự trong chuỗi là một chữ số, nghĩa là không phải dấu chấm câu, không phải chữ cái và không phải số âm

Cách thức hoạt động của
456
True
A12
False
55 và khi nào nên sử dụng nó

Phương thức

str = '456'
print[str]
print[str.isdigit[]]

str = 'A12'
print[str]
print[str.isdigit[]]
13 rất giống, nó trả về
str = '2\u2076'
print[str]
print[str.isdigit[]]

str = '4\u2082'
print[str]
print[str.isdigit[]]
10 nếu tất cả các ký tự đều là ký tự thập phân và chuỗi không trống. Điều này có nghĩa là các chỉ số trên KHÔNG phải là số thập phân, do đó chúng sẽ trả về
str = '2\u2076'
print[str]
print[str.isdigit[]]

str = '4\u2082'
print[str]
print[str.isdigit[]]
11

str = '2.45'
print[str]
print[str.isdigit[]]

str = '-12'
print[str]
print[str.isdigit[]]
7

Chỉ số trên không phải là số thập phân

str = '456'
print[str]
print[str.isdigit[]]

str = 'A12'
print[str]
print[str.isdigit[]]
17 cũng chấp nhận các ký tự Unicode được sử dụng để tạo số ở cơ số 10 trong các ngôn ngữ khác. Ví dụ: chữ số 0 trong tiếng Ả Rập-Ấn Độ được coi là số thập phân, do đó, kết quả là
str = '2.45'
print[str]
print[str.isdigit[]]

str = '-12'
print[str]
print[str.isdigit[]]
00 trả về true

2.45
False
-12
False
0

Tiếng Ả Rập-Ấn Độ, chẳng hạn như '٠' thập phân trong cơ số 10

Khi nào nên sử dụng nó?

Sử dụng

# ' ' [space] is not a digit
In [8]: ' 102030'.isdigit[]
Out[8]: False
9 khi bạn muốn xác minh rằng mỗi và mọi ký tự trong một chuỗi có thể tạo thành một số cơ số 10. Vì dấu chấm câu, chỉ số trên, chữ cái và dấu trừ không phải là số thập phân nên chúng sẽ trả về
str = '2\u2076'
print[str]
print[str.isdigit[]]

str = '4\u2082'
print[str]
print[str.isdigit[]]
11

Cách thức hoạt động của
456
True
A12
False
56 và khi nào nên sử dụng nó

Cái này trùng lặp đáng kể với

str = '456'
print[str]
print[str.isdigit[]]

str = 'A12'
print[str]
print[str.isdigit[]]
15 và
str = '456'
print[str]
print[str.isdigit[]]

str = 'A12'
print[str]
print[str.isdigit[]]
17. Theo tài liệu,
str = '456'
print[str]
print[str.isdigit[]]

str = 'A12'
print[str]
print[str.isdigit[]]
16 trả về
str = '2\u2076'
print[str]
print[str.isdigit[]]

str = '4\u2082'
print[str]
print[str.isdigit[]]
10 nếu tất cả chuỗi ký tự là số và không được để trống

Sự khác biệt chính ở đây là từ số. Sự khác biệt giữa ký tự số và ký tự chữ số là gì?

Sự khác biệt là một chữ số là một giá trị Unicode duy nhất trong khi một ký tự số là bất kỳ ký hiệu Unicode nào đại diện cho một giá trị số và bao gồm các phân số

Không chỉ vậy,

str = '456'
print[str]
print[str.isdigit[]]

str = 'A12'
print[str]
print[str.isdigit[]]
16 hoạt động tốt với các chữ số La Mã

Hãy xem một số ví dụ trong hành động

2.45
False
-12
False
9

# ' ' [space] is not a digit
In [8]: ' 102030'.isdigit[]
Out[8]: False
0

# ' ' [space] is not a digit
In [8]: ' 102030'.isdigit[]
Out[8]: False
1

Khi nào nên sử dụng nó?

Sử dụng

str = '456'
print[str]
print[str.isdigit[]]

str = 'A12'
print[str]
print[str.isdigit[]]
10 khi bạn muốn xác minh rằng mỗi và mọi ký tự trong chuỗi là một ký tự số hợp lệ, bao gồm phân số, ký tự trên và số La Mã. Vì dấu chấm câu, chữ cái và dấu trừ không phải là giá trị số nên chúng sẽ đánh giá là
str = '2\u2076'
print[str]
print[str.isdigit[]]

str = '4\u2082'
print[str]
print[str.isdigit[]]
11

Giải quyết các vấn đề thường gặp

Trong phần này, chúng ta sẽ xem cách khắc phục các sự cố phổ biến nhất khi sử dụng

str = '456'
print[str]
print[str.isdigit[]]

str = 'A12'
print[str]
print[str.isdigit[]]
15,
str = '456'
print[str]
print[str.isdigit[]]

str = 'A12'
print[str]
print[str.isdigit[]]
16 và
str = '456'
print[str]
print[str.isdigit[]]

str = 'A12'
print[str]
print[str.isdigit[]]
17

Làm cách nào để kiểm tra xem số float có phải là chữ số không?

Cách tốt nhất để kiểm tra đó là cố gắng truyền nó tới

str = '2.45'
print[str]
print[str.isdigit[]]

str = '-12'
print[str]
print[str.isdigit[]]
74

Hàm tạo

str = '2.45'
print[str]
print[str.isdigit[]]

str = '-12'
print[str]
print[str.isdigit[]]
74 không đưa ra bất kỳ ngoại lệ nào, thì chuỗi là một giá trị float hợp lệ. Đây là một thành ngữ Pythonic được gọi là EAFP [Xin tha thứ dễ hơn xin phép]

# ' ' [space] is not a digit
In [8]: ' 102030'.isdigit[]
Out[8]: False
2

THẬN TRỌNG. Phương thức chuỗi này không hoạt động với chỉ số trên. Cách duy nhất để xác minh điều đó là thay thế '. ' và sau đó gọi `isdigit[]' trên đó

# ' ' [space] is not a digit
In [8]: ' 102030'.isdigit[]
Out[8]: False
3
# ' ' [space] is not a digit
In [8]: ' 102030'.isdigit[]
Out[8]: False
4

Làm cách nào để kiểm tra xem số âm có phải là chữ số không?

Kiểm tra các số bắt đầu bằng dấu trừ phụ thuộc vào loại mục tiêu

Vì chúng ta đang nói về các chữ số ở đây, nên cần xác nhận xem chuỗi có thể được chuyển đổi thành

str = '2.45'
print[str]
print[str.isdigit[]]

str = '-12'
print[str]
print[str.isdigit[]]
76 hay không. Điều này rất giống với cách tiếp cận EAFP được thảo luận cho số float

Tuy nhiên, giống như cách tiếp cận trước đó, nó không xử lý các chỉ số trên

# ' ' [space] is not a digit
In [8]: ' 102030'.isdigit[]
Out[8]: False
5

Để khắc phục điều đó, cách tốt nhất là bỏ dấu trừ đi

# ' ' [space] is not a digit
In [8]: ' 102030'.isdigit[]
Out[8]: False
6

Tại sao
str = '456'
print[str]
print[str.isdigit[]]

str = 'A12'
print[str]
print[str.isdigit[]]
15 không hiệu quả với tôi?

Vấn đề phổ biến nhất khiến

str = '456'
print[str]
print[str.isdigit[]]

str = 'A12'
print[str]
print[str.isdigit[]]
15 /
str = '456'
print[str]
print[str.isdigit[]]

str = 'A12'
print[str]
print[str.isdigit[]]
16 /
str = '456'
print[str]
print[str.isdigit[]]

str = 'A12'
print[str]
print[str.isdigit[]]
17 hoạt động bình thường là có khoảng trắng ở đầu hoặc cuối trong chuỗi. Trước khi sử dụng chúng, bắt buộc phải xóa mọi khoảng trắng ở đầu hoặc cuối hoặc ký tự khác, chẳng hạn như dòng mới [
2.45
False
-12
False
01]]

# ' ' [space] is not a digit
In [8]: ' 102030'.isdigit[]
Out[8]: False
7

Sự kết luận

Trong bài đăng này, chúng tôi đã thấy sự khác biệt tinh tế giữa

str = '456'
print[str]
print[str.isdigit[]]

str = 'A12'
print[str]
print[str.isdigit[]]
15 so với
str = '456'
print[str]
print[str.isdigit[]]

str = 'A12'
print[str]
print[str.isdigit[]]
17 so với
str = '456'
print[str]
print[str.isdigit[]]

str = 'A12'
print[str]
print[str.isdigit[]]
16 và cách chọn phương thức chuỗi phù hợp nhất cho trường hợp sử dụng của bạn. Chúng ta cũng thấy những trường hợp không thể đơn lẻ xử lý và cách khắc phục những hạn chế đó

Isdigit có hoạt động với số âm không?

isdigit[] trả về giá trị True khi chuỗi đã cho là số nguyên dương. Tuy nhiên, nó trả về Sai khi chuỗi là số thực hoặc số âm .

Python có nhận ra số âm không?

Trong Python, các số dương có thể được thay đổi thành số âm với sự trợ giúp của phương thức dựng sẵn được cung cấp trong thư viện Python có tên là abs []. When abs [] is used, it converts negative numbers to positive. However, when -abs [] is used, then a positive number can be changed to a negative number.

Bạn có thể sử dụng số âm trong phạm vi Python không?

Trong Python hàm phạm vi hoạt động với các số âm giống như cách nó hoạt động với các số dương. bạn chỉ cần cung cấp giá trị bắt đầu âm và giá trị dừng âm và nó trả về chuỗi số âm trong phạm vi đã cho.

Isdigit hoạt động như thế nào trong Python?

Hàm isdigit[] của Python trả về giá trị Boolean TRUE nếu tất cả các giá trị trong chuỗi đầu vào là chữ số; . Phương thức chuỗi isdigit[] trong Python được sử dụng để kiểm tra xem tất cả các ký tự trong chuỗi có phải là giá trị chữ số hay không. Các chữ số là số thập phân, số mũ, chỉ số, v.v. . The Python isdigit[] string method is used to check if all the characters in the string are digit values or not. Digits are decimal number, exponents, subscripts, etc.

Chủ Đề