Làm thế nào để bạn kiểm tra xem một số có chứa một con trăn chữ số nhất định không?

Câu hỏi này thực sự đã xuất hiện trong một trong những bài kiểm tra của học sinh của tôi. Ở đây, chúng tôi được yêu cầu viết một hàm

def contains_1[n]:
if n>=10 and n=10 and n 0:
remainder = n % 10
n = n // 10
if remainder == 1:
return True
return False
0 nếu không. Thông thường, chúng ta có thể làm điều này trong 1 dòng

def contains_1[n]:
return "1" in str[n]

Cuộc đuổi bắt

Chúng tôi không được phép sử dụng chuỗi trong chức năng của mình

Phiên bản đơn giản trong đó 1 ≤ n ≤ 100

Trong câu hỏi mà sinh viên của tôi đã đưa ra, số nguyên đầu vào được giới hạn trong phạm vi từ 1 đến 100. Chúng ta có thể đơn giản giả định rằng số đó nằm trong khoảng từ 1 đến 100 [bao gồm cả], điều này khiến mọi thứ trở nên đơn giản hơn nhiều

Lực lượng vũ phu

def contains_1[n]:
numbers_with_1 = [1,10,11,12,13,14,15,16,17,18,19,
21,31,41,51,61,71,81,91,100]
return n in numbers_with_1

Cho rằng các số chỉ nằm trong khoảng từ 1 đến 100, thực sự khả thi khi thực hiện phương pháp vũ phu và liệt kê thủ công từng số có chứa chữ số 1, sau đó kiểm tra xem số đầu vào của chúng ta có thuộc bên trong không

Sử dụng câu lệnh if-else

def contains_1[n]:
if n>=10 and n 0:
remainder = n % 10
n = n // 10
if remainder == 1:
return True
return False
1 thành số dương [chúng tôi không muốn giải quyết các số âm ở đây]
  • Kiểm tra xem số hiện tại của chúng tôi có kết thúc bằng số 1 không. Chúng ta có thể làm điều này bằng cách sử dụng chức năng modulo
  • Nếu
    def contains_1[n]:
    n = abs[n]
    while n > 0:
    remainder = n % 10
    n = n // 10
    if remainder == 1:
    return True
    return False
    2 là 1, chúng tôi biết chắc chắn rằng số
    def contains_1[n]:
    n = abs[n]
    while n > 0:
    remainder = n % 10
    n = n // 10
    if remainder == 1:
    return True
    return False
    1 của chúng tôi chứa chữ số 1, vì vậy chúng tôi trả về
    def contains_1[n]:
    if n>=10 and n 0:
    remainder = n % 10
    n = n // 10
    if remainder == 1:
    return True
    return False
    2 không phải là 1, chúng ta tiếp tục cuộc sống và chia
    def contains_1[n]:
    n = abs[n]
    while n > 0:
    remainder = n % 10
    n = n // 10
    if remainder == 1:
    return True
    return False
    1 cho 10 [chia tầng]
  • Lặp lại cho đến khi
    def contains_1[n]:
    n = abs[n]
    while n > 0:
    remainder = n % 10
    n = n // 10
    if remainder == 1:
    return True
    return False
    1 bằng 0
  • Trả lại
    def contains_1[n]:
    n = abs[n]
    while n > 0:
    remainder = n % 10
    n = n // 10
    if remainder == 1:
    return True
    return False
    0 ở cuối nếu chúng tôi không gặp bất kỳ chữ số 1 nào
  • Giải mã

    def contains_1[n]:
    n = abs[n]
    while n > 0:
    remainder = n % 10
    n = n // 10
    if remainder == 1:
    return True
    return False

    Chạy nhanh trong đó n = 12345

    1. def contains_1[n]:
      numbers_with_1 = [1,10,11,12,13,14,15,16,17,18,19,
      21,31,41,51,61,71,81,91,100]
      return n in numbers_with_1
      6 là 5 → số cuối cùng không phải là 1
    2. Bây giờ chúng ta chỉ cần kiểm tra
      def contains_1[n]:
      numbers_with_1 = [1,10,11,12,13,14,15,16,17,18,19,
      21,31,41,51,61,71,81,91,100]
      return n in numbers_with_1
      7, vì chúng ta biết chắc chắn rằng số cuối cùng không phải là 1 [nó là 5]
    3. def contains_1[n]:
      numbers_with_1 = [1,10,11,12,13,14,15,16,17,18,19,
      21,31,41,51,61,71,81,91,100]
      return n in numbers_with_1
      8 →
      def contains_1[n]:
      n = abs[n]
      while n > 0:
      remainder = n % 10
      n = n // 10
      if remainder == 1:
      return True
      return False
      1 bây giờ sẽ là 1234
    4. def contains_1[n]:
      if n>=10 and n=10 and n 0:
      remainder = n % 10
      n = n // 10
      if remainder == 1:
      return True
      return False
      1 bây giờ sẽ là 123
    5. Lặp lại điều này cho đến khi
      def contains_1[n]:
      if n>=10 and n=10 and n=10 and n=10 and n=10 and n 0:
      remainder = n % 10
      n = n // 10
      if remainder == 1:
      return True
      return False
      1 bây giờ là
      def contains_1[n]:
      if n>=10 and n 0:
      remainder = n % 10
      n = n // 10
      if remainder == 1:
      return True
      return False
      2 là 7 → số cuối cùng không phải là 1 → kiểm tra
      def contains_1[n]:
      n = abs[n]
      while n > 0:
      remainder = n % 10
      n = n // 10
      if remainder == 1:
      return True
      return False
      3
    6. def contains_1[n]:
      numbers_with_1 = [1,10,11,12,13,14,15,16,17,18,19,
      21,31,41,51,61,71,81,91,100]
      return n in numbers_with_1
      8 →
      def contains_1[n]:
      n = abs[n]
      while n > 0:
      remainder = n % 10
      n = n // 10
      if remainder == 1:
      return True
      return False
      1 bây giờ là
      def contains_1[n]:
      n = abs[n]
      while n > 0:
      remainder = n % 10
      n = n // 10
      if remainder == 1:
      return True
      return False
      3
    7. def contains_1[n]:
      n = abs[n]
      while n > 0:
      remainder = n % 10
      n = n // 10
      if remainder == 1:
      return True
      return False
      7 là 8 → số cuối cùng không phải là 1 → kiểm tra
      def contains_1[n]:
      n = abs[n]
      while n > 0:
      remainder = n % 10
      n = n // 10
      if remainder == 1:
      return True
      return False
      8
    8. def contains_1[n]:
      numbers_with_1 = [1,10,11,12,13,14,15,16,17,18,19,
      21,31,41,51,61,71,81,91,100]
      return n in numbers_with_1
      8 →
      def contains_1[n]:
      n = abs[n]
      while n > 0:
      remainder = n % 10
      n = n // 10
      if remainder == 1:
      return True
      return False
      1 bây giờ là
      def contains_1[n]:
      n = abs[n]
      while n > 0:
      remainder = n % 10
      n = n // 10
      if remainder == 1:
      return True
      return False
      8
    9. def contains_1[n]:
      if n>=10 and n 0:
      remainder = n % 10
      n = n // 10
      if remainder == 1:
      return True
      return False
      1 bây giờ là
      def contains_1[n]:
      if n>=10 and n 0:
      remainder = n % 10
      n = n // 10
      if remainder == 1:
      return True
      return False
      0

    Một số mã thử nghiệm

    def contains_1[n]:
    if n>=10 and n

    Chủ Đề