2011-12-21 32 views
6

Tôi đang cố gắng viết một hàm trả về số lượng dấu 0 trong một chuỗi hoặc số nguyên. Đây là những gì tôi đang cố gắng và nó không trả về các giá trị chính xác.Trong Python, làm cách nào để đếm số không theo sau trong một chuỗi hoặc số nguyên?

def trailing_zeros(longint): 
    manipulandum = str(longint) 
    x = 0 
    i = 1 
    for ch in manipulandum: 
     if manipulandum[-i] == '0': 
      x += x 
      i += 1 
     else: 
      return x 
+0

"không trả lại giá trị chính xác"? Nó sẽ giúp nếu bạn cung cấp các trường hợp kiểm tra bạn đang sử dụng với các câu trả lời mong đợi và câu trả lời bạn đang nhận được. –

+0

Mới vào trang này, cảm ơn cho đầu vào. –

+0

Tôi đoán bạn muốn nói 'i + = 1'. –

Trả lời

8

Có thể bạn có thể thử thực hiện việc này. Điều này có thể dễ dàng hơn đếm từng trailing '0 của

def trailing_zeros(longint): 
    manipulandum = str(longint) 
    return len(manipulandum)-len(manipulandum.rstrip('0')) 
+0

Tôi có thể nói tôi sẽ thích trang này. Các bạn rock. –

19

Đối với dây, nó có lẽ là dễ nhất để sử dụng rstrip():

In [2]: s = '23989800000' 

In [3]: len(s) - len(s.rstrip('0')) 
Out[3]: 5 
+0

+1: Clever ..... –

1

Bạn có thể chỉ:

  1. Hãy chiều dài của chuỗi giá trị của những gì bạn đang kiểm tra
  2. Cắt bỏ các số không theo sau từ bản sao của chuỗi
  3. Mất thời lượng một lần nữa, của chuỗi được cắt bớt
  4. Trừ chiều dài mới khỏi độ dài cũ để thu được số lượng dấu sao.
0

tôi thấy hai cách để đạt được điều này, là một trong những đã đề cập ở trên và hai là gần như tương tự:

manipulandum.count('0') - manipulandum.rstrip('0').count('0') 

Nhưng vẫn còn, tôi tìm kiếm một số câu trả lời tốt hơn.

Các vấn đề liên quan