Hướng dẫn validate number sequence in python - xác thực chuỗi số trong python

Tôi đã học 1,5 tuần học Python và làm việc thông qua một trong những nhiệm vụ đầu tiên của tôi. Tôi có một chuỗi đầu vào trong Python trông giống như sau:

input = "4567-8901-2345"

Đối với chuỗi này, tôi muốn kiểm tra bốn quy tắc:

  1. Chữ số đầu tiên phải là 4.
  2. Chữ số thứ tư phải lớn hơn một chữ số thứ năm.
  3. Tổng của tất cả các chữ số phải chia đều cho 4.
  4. Nếu bạn coi hai chữ số đầu tiên là một số hai chữ số và chữ số thứ bảy và thứ tám dưới dạng một số hai chữ số, tổng của chúng phải là 100.

Tôi đã viết mã sau. Mỗi phần của mã xuất hiện để đáp ứng 4 quy tắc riêng lẻ, nhưng thách thức tôi gặp phải là một khi Quy tắc 1 được đáp ứng thành công chẳng hạn, mã dừng chạy - nó sẽ kiểm tra từng quy tắc liên tiếp và một khi quy tắc không thành công, nó Nên in ra số quy tắc không được đáp ứng. Tôi còn thiếu gì?

def verify(number) :

#rule 1
  value_first = input[0]
  number = int(value_first)
  if number == 4 :
    return True
  else :
    return ('1')

#rule 2
  value_second = input[3]
  value_third = input[5]
  number_second = int(value_second)
  number_third = int(value_third)
  if number_second == number_third + 1 :
    return True
  else :
    return ('2')

#rule3
  total = sum(int(x) for x in input if x.isdigit())
  if total % 4 == 0 :
    return True
  else :
    return ('3')

#rule4
  pair_one = input[0] + input[1]
  pair_two = input[7] + input[8]
  pair_one_int = int(pair_one)
  pair_two_int = int(pair_two)
  if pair_one_int + pair_two_int == 100 :
    return True
  else :
    return ('4')

input = "4567-8901-2345"
output = verify(input)
print(output)  

hỏi ngày 29 tháng 1 năm 2020 lúc 12:12Jan 29, 2020 at 12:12

Hướng dẫn validate number sequence in python - xác thực chuỗi số trong python

2

Để mở rộng nhận xét của tôi, tôi đã chia từng quy tắc thành một chức năng của riêng nó ở đây; Mỗi hàm trả về đúng nếu chúng vượt qua hoặc sai nếu chúng không:

def check_rule1(input):
    return input[0] == "4"


def check_rule2(input):
    value_second = input[3]
    value_third = input[5]
    number_second = int(value_second)
    number_third = int(value_third)
    return number_second == number_third + 1


def check_rule3(input):
    total = sum(int(x) for x in input if x.isdigit())
    return total % 4 == 0


def check_rule4(input):
    pair_one = input[0] + input[1]
    pair_two = input[7] + input[8]
    pair_one_int = int(pair_one)
    pair_two_int = int(pair_two)
    return (pair_one_int + pair_two_int == 100)


def check_rules(input):
    print(input)
    print("  Rule 1:", check_rule1(input))
    print("  Rule 2:", check_rule2(input))
    print("  Rule 3:", check_rule3(input))
    print("  Rule 4:", check_rule4(input))


check_rules("4567-8901-2345")

Điều này sẽ đầu ra

4567-8901-2345
  Rule 1: True
  Rule 2: False
  Rule 3: False
  Rule 4: False

- Thực hiện cuộc gọi check_rules mỗi chức năng kiểm tra và trả về số lượng quy tắc không thể bỏ lại như một bài tập cho người đọc.

Đã trả lời ngày 29 tháng 1 năm 2020 lúc 12:19Jan 29, 2020 at 12:19

Hướng dẫn validate number sequence in python - xác thực chuỗi số trong python

AkxakxAKX

Huy hiệu vàng 139K1212 gold badges105 silver badges155 bronze badges

Hoặc, như AKX nói rằng đặt từng quy tắc vào một chức năng duy nhất, điều này sẽ giúp bạn có ý nghĩa hơn về tất cả hoặc không trả về đúng. Bằng cách này, bất cứ khi nào một điều kiện thất bại, việc xác thực bị dừng và số quy tắc được trả về và chỉ khi tất cả các xác nhận là chính xác, nó sẽ trả về đúng một lần.

def verify(number) :

#rule 1
  value_first = input[0]
  number = int(value_first)
  if number != 4 :
    return ('1')

#rule 2
  value_second = input[3]
  value_third = input[5]
  number_second = int(value_second)
  number_third = int(value_third)
  if number_second != number_third + 1 :
    return ('2')

#rule3
  total = sum(int(x) for x in input if x.isdigit())
  if total % 4 != 0 :
    return ('3')

#rule4
  pair_one = input[0] + input[1]
  pair_two = input[7] + input[8]
  pair_one_int = int(pair_one)
  pair_two_int = int(pair_two)
  if pair_one_int + pair_two_int != 100 :
    return ('4')
  return True

input = "4567-8901-2345"
output = verify(input)
print(output)  

Đã trả lời ngày 29 tháng 1 năm 2020 lúc 12:17Jan 29, 2020 at 12:17

LeoeleoeLeoE

1.9781 Huy hiệu vàng7 Huy hiệu bạc24 Huy hiệu đồng1 gold badge7 silver badges24 bronze badges

Tôi sẽ đặt mỗi xác nhận bên trong chức năng của chính nó. Mã thực tế của bạn bỏ qua các quy tắc 2, 3 và 4 vì bạn đang trả về một giá trị (true hoặc 1) trong đầu tiên của bạn.

Nếu bạn không muốn sử dụng các chức năng, hãy lưu trữ kết quả của mỗi đánh giá trong danh sách/tuple và kiểm tra xem mỗi yếu tố của danh sách/tuple đó có đúng để chấp nhận rằng đầu vào là một chuỗi hợp lệ.

Đã trả lời ngày 29 tháng 1 năm 2020 lúc 12:21Jan 29, 2020 at 12:21

Hướng dẫn validate number sequence in python - xác thực chuỗi số trong python

Enbermudasenbermudasenbermudas

1.5213 huy hiệu vàng18 Huy hiệu bạc41 Huy hiệu đồng3 gold badges18 silver badges41 bronze badges

Làm thế nào để bạn kiểm tra xem một số có trong một chuỗi trong Python không?

Chúng tôi phải kiểm tra xem nó có chứa các giá trị tiếp giáp hay không ...
Nếu nums [i] <0, thì.j: = -nums [i] - min_val ..
Nếu không, j: = nums [i] - min_val ..
Nếu nums [j]> 0, thì.nums [j]: = -nums [j].
Nếu không, trả lại sai ..

Danh sách có phải là một chuỗi hợp lệ trong Python không?

Có, nhưng họ quét với mã được biên dịch, trái ngược với một vòng lặp lặp lại trong mã Python., in contrast to a loop that iterates in Python code.

Làm thế nào để bạn tìm thấy thứ tự của một số trong danh sách Python?

Khoa học dữ liệu thực tế sử dụng Python..
Đếm: = 0, ANS: = 0 ..
Đối với tôi trong phạm vi 2 đến kích thước của num, làm.Nếu nums [i] - nums [i - 1] giống như nums [i - 1] - nums [i - 2], thì.Đếm: = Đếm + 1. Nếu không, ....
Nếu số lượng là không, thì.ANS: = ANS + thương số của (Đếm *(đếm + 1)) / 2 ..
trả lại ans ..