Hướng dẫn how to find digits of a number in python - cách tìm các chữ số của một số trong python

Như được hiển thị bởi các câu trả lời khác, việc sử dụng

assert 4 == (0b1111).bit_length()
assert 8 == (0b1011_1000).bit_length()
assert 9 == (0b1_1011_1000).bit_length()
1 dẫn đến kết quả không chính xác cho
assert 4 == (0b1111).bit_length()
assert 8 == (0b1011_1000).bit_length()
assert 9 == (0b1_1011_1000).bit_length()
2 lớn trong khi sử dụng
assert 4 == (0b1111).bit_length()
assert 8 == (0b1011_1000).bit_length()
assert 9 == (0b1_1011_1000).bit_length()
3 hoặc vòng lặp thủ công dẫn đến hiệu suất chậm cho
assert 4 == (0b1111).bit_length()
assert 8 == (0b1011_1000).bit_length()
assert 9 == (0b1_1011_1000).bit_length()
2 lớn. Câu trả lời của Jodag cung cấp một sự thay thế thực sự tốt mà chỉ thất bại đối với các số nguyên có thể sẽ làm hỏng máy tính của bạn, nhưng chúng tôi có thể làm tốt hơn một chút và thậm chí nhanh hơn (đối với
assert 4 == (0b1111).bit_length()
assert 8 == (0b1011_1000).bit_length()
assert 9 == (0b1_1011_1000).bit_length()
2 đủ nhỏ để
assert 4 == (0b1111).bit_length()
assert 8 == (0b1011_1000).bit_length()
assert 9 == (0b1_1011_1000).bit_length()
6 được đảm bảo là chính xác) bằng cách tránh logarit hoàn toàn và sử dụng nhị phân thay thế :and even faster (for
assert 4 == (0b1111).bit_length()
assert 8 == (0b1011_1000).bit_length()
assert 9 == (0b1_1011_1000).bit_length()
2 small enough that
assert 4 == (0b1111).bit_length()
assert 8 == (0b1011_1000).bit_length()
assert 9 == (0b1_1011_1000).bit_length()
6 is guaranteed to be accurate) by avoid logarithms altogether and using binary instead:

def num_digits(n: int) -> int:
    assert n > 0
    i = int(0.30102999566398114 * (n.bit_length() - 1)) + 1
    return (10 ** i <= n) + i

Hãy phá vỡ điều này. Đầu tiên, có

assert 4 == (0b1111).bit_length()
assert 8 == (0b1011_1000).bit_length()
assert 9 == (0b1_1011_1000).bit_length()
7 kỳ lạ. Điều này tính toán độ dài trong nhị phân:

assert 4 == (0b1111).bit_length()
assert 8 == (0b1011_1000).bit_length()
assert 9 == (0b1_1011_1000).bit_length()

Không giống như logarit, đây là cả nhanh chóng và chính xác cho các số nguyên. Hóa ra, điều này dẫn đến chính xác

assert 4 == (0b1111).bit_length()
assert 8 == (0b1011_1000).bit_length()
assert 9 == (0b1_1011_1000).bit_length()
8. Để tự mình có được
assert 4 == (0b1111).bit_length()
assert 8 == (0b1011_1000).bit_length()
assert 9 == (0b1_1011_1000).bit_length()
9, chúng tôi trừ
log2(n) - 1 < floor(log2(n)) <= log2(n)

log10(n) - 0.30102999566398114 < 0.30102999566398114 * floor(log2(n)) <= log10(n)

floor(log10(n) - 0.30102999566398114) < floor(0.30102999566398114 * floor(log2(n))) <= floor(log10(n))
0, do đó
log2(n) - 1 < floor(log2(n)) <= log2(n)

log10(n) - 0.30102999566398114 < 0.30102999566398114 * floor(log2(n)) <= log10(n)

floor(log10(n) - 0.30102999566398114) < floor(0.30102999566398114 * floor(log2(n))) <= floor(log10(n))
1.

Tiếp theo, chúng tôi nhân với

log2(n) - 1 < floor(log2(n)) <= log2(n)

log10(n) - 0.30102999566398114 < 0.30102999566398114 * floor(log2(n)) <= log10(n)

floor(log10(n) - 0.30102999566398114) < floor(0.30102999566398114 * floor(log2(n))) <= floor(log10(n))
2. Điều này tương đương với
log2(n) - 1 < floor(log2(n)) <= log2(n)

log10(n) - 0.30102999566398114 < 0.30102999566398114 * floor(log2(n)) <= log10(n)

floor(log10(n) - 0.30102999566398114) < floor(0.30102999566398114 * floor(log2(n))) <= floor(log10(n))
3 hơi tròn xuống. Điều này tận dụng các quy tắc logarit để tính toán ước tính
log2(n) - 1 < floor(log2(n)) <= log2(n)

log10(n) - 0.30102999566398114 < 0.30102999566398114 * floor(log2(n)) <= log10(n)

floor(log10(n) - 0.30102999566398114) < floor(0.30102999566398114 * floor(log2(n))) <= floor(log10(n))
4 từ
assert 4 == (0b1111).bit_length()
assert 8 == (0b1011_1000).bit_length()
assert 9 == (0b1_1011_1000).bit_length()
9.

Bây giờ, bạn có thể tự hỏi làm thế nào chúng ta có thể ở thời điểm này, bởi vì mặc dù

log2(n) - 1 < floor(log2(n)) <= log2(n)

log10(n) - 0.30102999566398114 < 0.30102999566398114 * floor(log2(n)) <= log10(n)

floor(log10(n) - 0.30102999566398114) < floor(0.30102999566398114 * floor(log2(n))) <= floor(log10(n))
6, điều tương tự cũng không đúng với
log2(n) - 1 < floor(log2(n)) <= log2(n)

log10(n) - 0.30102999566398114 < 0.30102999566398114 * floor(log2(n)) <= log10(n)

floor(log10(n) - 0.30102999566398114) < floor(0.30102999566398114 * floor(log2(n))) <= floor(log10(n))
7. Hãy nhớ lại rằng
log2(n) - 1 < floor(log2(n)) <= log2(n)

log10(n) - 0.30102999566398114 < 0.30102999566398114 * floor(log2(n)) <= log10(n)

floor(log10(n) - 0.30102999566398114) < floor(0.30102999566398114 * floor(log2(n))) <= floor(log10(n))
8 để chúng ta có thể thực hiện một số toán học nhanh:

log2(n) - 1 < floor(log2(n)) <= log2(n)

log10(n) - 0.30102999566398114 < 0.30102999566398114 * floor(log2(n)) <= log10(n)

floor(log10(n) - 0.30102999566398114) < floor(0.30102999566398114 * floor(log2(n))) <= floor(log10(n))

Lưu ý rằng

log2(n) - 1 < floor(log2(n)) <= log2(n)

log10(n) - 0.30102999566398114 < 0.30102999566398114 * floor(log2(n)) <= log10(n)

floor(log10(n) - 0.30102999566398114) < floor(0.30102999566398114 * floor(log2(n))) <= floor(log10(n))
9 ít nhất là
num = 3452
count = 0

while num != 0:
    num //= 10
    count += 1

print("Number of digits: " + str(count))
0, có nghĩa là chúng ta sẽ giảm nhiều nhất so với kết quả của chúng ta. Đây là nơi mà sự điều chỉnh cuối cùng xuất hiện, nơi chúng tôi kiểm tra
num = 3452
count = 0

while num != 0:
    num //= 10
    count += 1

print("Number of digits: " + str(count))
2, kết quả là một
num = 3452
count = 0

while num != 0:
    num //= 10
    count += 1

print("Number of digits: " + str(count))
3 khi kết quả quá nhỏ hoặc
num = 3452
count = 0

while num != 0:
    num //= 10
    count += 1

print("Number of digits: " + str(count))
4 khi kết quả vừa phải.

Tương tự như câu trả lời của Jodag, cách tiếp cận này thực sự thất bại với

assert 4 == (0b1111).bit_length()
assert 8 == (0b1011_1000).bit_length()
assert 9 == (0b1_1011_1000).bit_length()
2 rất lớn, ở đâu đó vào khoảng
num = 3452
count = 0

while num != 0:
    num //= 10
    count += 1

print("Number of digits: " + str(count))
6 trong đó
num = 3452
count = 0

while num != 0:
    num //= 10
    count += 1

print("Number of digits: " + str(count))
7 bị tắt hơn
num = 3452
count = 0

while num != 0:
    num //= 10
    count += 1

print("Number of digits: " + str(count))
8. Tuy nhiên, các số nguyên có kích thước đó có thể sẽ làm hỏng máy tính của bạn, vì vậy điều này đủ.

Ví dụ 1: Số lượng chữ số trong một số nguyên sử dụng trong khi vòng lặp

num = 3452
count = 0

while num != 0:
    num //= 10
    count += 1

print("Number of digits: " + str(count))

Đầu ra

Number of digits: 4

Trong chương trình này, vòng lặp trong khi được lặp lại cho đến khi biểu thức kiểm tra

num = 3452
count = 0

while num != 0:
    num //= 10
    count += 1

print("Number of digits: " + str(count))
9 được đánh giá thành 0 (sai).

  1. Sau lần lặp đầu tiên,
    Number of digits: 4
    0 sẽ được chia cho 10 và giá trị của nó sẽ là 345. Sau đó,
    Number of digits: 4
    1 được tăng lên 1.
  2. Sau lần lặp thứ hai, giá trị của
    Number of digits: 4
    0 sẽ là 34 và
    Number of digits: 4
    1 được tăng lên 2.
  3. Sau lần lặp thứ ba, giá trị của
    Number of digits: 4
    0 sẽ là 3 và
    Number of digits: 4
    1 được tăng lên 3.
  4. Sau lần lặp thứ tư, giá trị của
    Number of digits: 4
    0 sẽ là 0 và
    Number of digits: 4
    1 được tăng lên 4.
  5. Sau đó, biểu thức kiểm tra được đánh giá là sai và vòng lặp chấm dứt.

Ví dụ 2: Sử dụng các phương pháp sẵn có

num = 123456
print(len(str(num)))

Đầu ra

6

Trong chương trình này, vòng lặp trong khi được lặp lại cho đến khi biểu thức kiểm tra

num = 3452
count = 0

while num != 0:
    num //= 10
    count += 1

print("Number of digits: " + str(count))
9 được đánh giá thành 0 (sai).

  1. Làm thế nào để
  2. Python làm thế nào
  3. Tìm số chữ số trong một số trong Python

Được tạo ra: Tháng 6 năm 07, 2021 | Cập nhật: Tháng 8 đến 10 tháng 8 năm 2021

  1. Tìm số chữ số bên trong một số có hàm
    num = 123456
    print(len(str(num)))
    0 trong Python
  2. Tìm số chữ số bên trong một số có hàm
    Number of digits: 4
    9 trong Python

Hàm

Number of digits: 4
9 là một hàm tích hợp trong Python được sử dụng để tính toán số lượng ký tự bên trong một biến chuỗi. Hàm
Number of digits: 4
9 lấy một chuỗi làm tham số đầu vào và trả về số lượng ký tự bên trong chuỗi đó. Để tính toán số chữ số bên trong một số bằng hàm
Number of digits: 4
9, trước tiên chúng ta phải chuyển đổi số đó thành một chuỗi với hàm
Number of digits: 4
8.

Tìm số chữ số bên trong một số có hàm num = 123456 print(len(str(num)))0 trong Python

Hướng dẫn này sẽ giới thiệu các phương thức để đếm số chữ số bên trong một số trong Python.

Đoạn mã sau đây cho chúng ta thấy cách chúng ta có thể tìm thấy số chữ số bên trong một số có hàm

num = 123456
print(len(str(num)))
0.

import math
n = -10
if n > 0:
    digits = int(math.log10(n))+1
elif n == 0:
    digits = 1
elif n < 0:
    digits = int(math.log10(-n))+2
print(digits)

Output:

3

Chúng tôi đã tính toán số chữ số bên trong số -10 với hàm

num = 123456
print(len(str(num)))
0 trong mã trên. Mã này cũng xử lý trường hợp số là 0, vì nhật ký của 0 không thể được tính toán. Trước tiên chúng tôi kiểm tra xem số lớn hơn 0. Nếu số lớn hơn 0, chúng tôi tính toán các chữ số bằng cách lấy nhật ký và thêm 1 vào kết quả. Quá trình này được thực hiện vì nhật ký của bất kỳ số nào là ít hơn 1 so với số chữ số bên trong số đó.

Nếu số bằng 0, chúng tôi đặt các chữ số bằng 1. Nếu số nhỏ hơn 0, chúng tôi tính toán số chữ số bằng cách lấy nhật ký của nghịch đảo phụ gia của số âm đó và thêm 2 vào kết quả. Trong trường hợp số âm, chúng tôi thêm một số 1 vì chúng tôi coi dấu

num = 123456
print(len(str(num)))
7 là một chữ số trong ví dụ này. Cuối cùng, chúng tôi in số chữ số trên màn hình.

Phương pháp này là tuyệt vời để sử dụng nếu chúng ta muốn xác định số lượng chữ số bên trong số nguyên. Tuy nhiên, nó không hoạt động với số thập phân hoặc bất kỳ số nào có điểm thập phân nổi.

Tìm số chữ số bên trong một số có hàm Number of digits: 49 trong Python

Hàm

Number of digits: 4
9 là một hàm tích hợp trong Python được sử dụng để tính toán số lượng ký tự bên trong một biến chuỗi. Hàm
Number of digits: 4
9 lấy một chuỗi làm tham số đầu vào và trả về số lượng ký tự bên trong chuỗi đó. Để tính toán số chữ số bên trong một số bằng hàm
Number of digits: 4
9, trước tiên chúng ta phải chuyển đổi số đó thành một chuỗi với hàm
Number of digits: 4
8.

Hàm

Number of digits: 4
8 cũng là một hàm tích hợp trong Python được sử dụng để chuyển đổi các đối tượng thuộc các loại khác nhau thành một biến chuỗi. Đoạn mã sau đây cho chúng ta thấy cách chúng ta có thể tìm thấy số chữ số bên trong một số có hàm
Number of digits: 4
9:

n = -100.90
digits = len(str(n))
print(digits)

Output:

assert 4 == (0b1111).bit_length()
assert 8 == (0b1011_1000).bit_length()
assert 9 == (0b1_1011_1000).bit_length()
0

Chúng tôi đã tính toán số chữ số bên trong số -100,90 với hàm

Number of digits: 4
9 trong mã trên. Đầu tiên, chúng tôi đã chuyển đổi số thành một chuỗi bằng hàm
Number of digits: 4
8. Sau đó, chúng tôi đã chuyển chuỗi kết quả cho hàm
Number of digits: 4
9 và lưu trữ các giá trị được trả về bởi hàm
Number of digits: 4
9 bên trong biến
6
9. Cuối cùng, chúng tôi đã in giá trị bên trong biến
6
9. Đầu ra cho thấy rõ rằng phương pháp này cũng được áp dụng cho các số thập phân hoặc số có chứa một điểm thập phân nổi.

Phương pháp

Number of digits: 4
9 vượt trội hơn nhiều so với phương pháp
num = 123456
print(len(str(num)))
0 để tìm số lượng các chữ số bên trong một số thập phân trong Python. Lý do là phương pháp
Number of digits: 4
9 rõ ràng, súc tích và cũng xử lý các điểm thập phân nổi không giống như phương pháp
num = 123456
print(len(str(num)))
0, phức tạp không cần thiết và không xử lý các điểm thập phân nổi.

Bài viết liên quan - Số Python

  • Tạo một danh sách các số lẻ trong Python
  • Chuyển đổi thư thành số trong Python
  • Hiển thị một số với số không hàng đầu trong Python
  • Kiểm tra xem một ký tự là một số trong Python
  • Làm thế nào để bạn tìm thấy các chữ số của một số?

    Công thức sẽ là số nguyên của (log10 (số) + 1).Ví dụ, nếu số là 1245, thì nó trên 1000 và dưới 10000, do đó giá trị nhật ký sẽ nằm trong phạm vi 3 integer of (log10(number) + 1). For an example, if the number is 1245, then it is above 1000, and below 10000, so the log value will be in range 3 < log10(1245) < 4. Now taking the integer, it will be 3. Then add 1 with it to get number of digits.

    Làm cách nào để trích xuất số từ một số trong Python?

    Sử dụng hàm isDigit () để trích xuất các chữ số từ chuỗi python.Python cung cấp cho chúng tôi chuỗi.isDigit () để kiểm tra sự hiện diện của các chữ số trong một chuỗi.Hàm python isDigit () trả về true nếu chuỗi đầu vào chứa các ký tự chữ số trong đó.isdigit() function to extract digits from a Python string. Python provides us with string. isdigit() to check for the presence of digits in a string. Python isdigit() function returns True if the input string contains digit characters in it.