Hướng dẫn how do you count digits in python? - làm thế nào để bạn đếm các chữ số trong python?

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

Number of digits: 4
0 được đánh giá thành 0 [sai].

  1. Sau lần lặp đầu tiên,
    Number of digits: 4
    1 sẽ được chia cho 10 và giá trị của nó sẽ là 345. Sau đó,
    Number of digits: 4
    2 được tăng lên 1.
  2. Sau lần lặp thứ hai, giá trị của
    Number of digits: 4
    1 sẽ là 34 và
    Number of digits: 4
    2 được tăng lên 2.
  3. Sau lần lặp thứ ba, giá trị của
    Number of digits: 4
    1 sẽ là 3 và
    Number of digits: 4
    2 được tăng lên 3.
  4. Sau lần lặp thứ tư, giá trị của
    Number of digits: 4
    1 sẽ là 0 và
    Number of digits: 4
    2 đượ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 thức 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

Number of digits: 4
0 được đánh giá thành 0 [sai].

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

num = 123456
print[len[str[num]]]
1 dẫn đến kết quả không chính xác cho
num = 123456
print[len[str[num]]]
2 lớn trong khi sử dụng
num = 123456
print[len[str[num]]]
3 hoặc vòng lặp thủ công dẫn đến hiệu suất chậm cho
num = 123456
print[len[str[num]]]
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
num = 123456
print[len[str[num]]]
2 đủ nhỏ để
num = 123456
print[len[str[num]]]
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
num = 123456
print[len[str[num]]]
2 small enough that
num = 123456
print[len[str[num]]]
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  0
    i = int[0.30102999566398114 * [n.bit_length[] - 1]] + 1
    return [10 ** i  int:
    assert n > 0
    i = int[0.30102999566398114 * [n.bit_length[] - 1]] + 1
    return [10 ** i  int:
    assert n > 0
    i = int[0.30102999566398114 * [n.bit_length[] - 1]] + 1
    return [10 ** i  int:
    assert n > 0
    i = int[0.30102999566398114 * [n.bit_length[] - 1]] + 1
    return [10 ** i  int:
    assert n > 0
    i = int[0.30102999566398114 * [n.bit_length[] - 1]] + 1
    return [10 ** i 

Bài Viết Liên Quan

Chủ Đề