Python giới hạn đầu vào cho một số từ nhất định

Trừ khi bạn xác thực hoàn toàn địa chỉ bằng cách sử dụng cơ sở dữ liệu gồm các địa chỉ hợp lệ [từ dịch vụ bưu chính của quốc gia được đề cập], bạn không thể chắc chắn rằng một số ký tự sẽ không bao giờ xuất hiện trong một địa chỉ

Nhưng nếu bạn cần kiểm tra thứ gì đó có định dạng cụ thể hơn nhiều [ví dụ: mã ZIP của Hoa Kỳ, chỉ bao gồm các chữ số và có thể có dấu gạch ngang], bạn có thể tạo một tập hợp từ một chuỗi và xem liệu tập hợp đó có phải là tập hợp con của một số . Đó là cách dễ nhất để kiểm tra bảng chữ cái của một chuỗi. Tuy nhiên, điều đó không giống với việc kiểm tra định dạng của nó [ví dụ: “90-12-345” không phải là mã ZIP hợp lệ của Hoa Kỳ], vì vậy, trước tiên, bạn phải quyết định loại xác thực mà bạn thực sự đang thực hiện

Tôi mới bắt đầu học ngôn ngữ lập trình thực sự đầu tiên của mình, Python. Tôi muốn biết cách hạn chế đầu vào của người dùng trong một raw_input đối với một số ký tự nhất định và ở một độ dài nhất định. Ví dụ: tôi muốn hiển thị thông báo lỗi nếu người dùng nhập một chuỗi chứa bất kỳ thứ gì ngoại trừ các chữ cái a-z và tôi muốn hiển thị một trong những đầu vào của người dùng hơn 15 ký tự

Cái đầu tiên có vẻ giống như thứ tôi có thể làm với các biểu thức chính quy, cái mà tôi biết một chút vì tôi đã sử dụng chúng trong Javascript, nhưng tôi không chắc cách sử dụng chúng trong Python. Cái thứ hai, tôi không chắc làm thế nào để tiếp cận nó. Có ai giúp được không?

Giải pháp tốt nhất

Câu hỏi 1. Hạn chế ở một số ký tự nhất định

Bạn nói đúng, điều này rất dễ giải quyết bằng các biểu thức chính quy

import re

input_str = raw_input["Please provide some info: "]
if not re.match["^[a-z]*$", input_str]:
    print "Error! Only letters a-z allowed!"
    sys.exit[]

Câu hỏi 2. Giới hạn độ dài nhất định

Như Tim đã đề cập chính xác, bạn có thể thực hiện việc này bằng cách điều chỉnh biểu thức chính quy trong ví dụ đầu tiên để chỉ cho phép một số ký tự nhất định. Bạn cũng có thể tự kiểm tra độ dài như thế này

input_str = raw_input["Please provide some info: "]
if len[input_str] > 15:
    print "Error! Only 15 characters allowed!"
    sys.exit[]

Hoặc cả hai trong một

import re

input_str = raw_input["Please provide some info: "]
if not re.match["^[a-z]*$", input_str]:
    print "Error! Only letters a-z allowed!"
    sys.exit[]
elif len[input_str] > 15:
    print "Error! Only 15 characters allowed!"
    sys.exit[]

print "Your input was:", input_str

Giải pháp liên quan

Tôi có thể đặt bao nhiêu tệp trong một thư mục

FAT32

  • Số lượng tệp tối đa. 268.173.300
  • Số lượng tệp tối đa trên mỗi thư mục. 216 - 1 [65,535]
  • Kích thước tệp tối đa. 2 GiB - 1 không có LFS, 4 GiB - 1 có
NTFS
  • Số lượng tệp tối đa. 232 - 1 [4.294.967.295]
  • Kích thước tệp tối đa
    • Thực hiện. 244 - 26 byte [16 TiB - 64 KiB]
    • lý thuyết. 264 - 26 byte [16 EiB - 64 KiB]
  • Kích thước âm lượng tối đa
    • Thực hiện. 232 - 1 cụm [256 TiB - 64 KiB]
    • lý thuyết. 264 - 1 cụm [1 YiB - 64 KiB]
máy lẻ2
  • Số lượng tệp tối đa. 1018
  • Số lượng tệp tối đa trên mỗi thư mục. ~1. 3 × 1020 [vấn đề về hiệu suất trong quá khứ 10.000]
  • Kích thước tệp tối đa
    • 16 GiB [kích thước khối 1 KiB]
    • 256 GiB [kích thước khối 2 KiB]
    • 2 TiB [kích thước khối 4 KiB]
    • 2 TiB [kích thước khối 8 KiB]
  • Kích thước âm lượng tối đa
    • 4 TiB [kích thước khối 1 KiB]
    • 8 TiB [kích thước khối 2 KiB]
    • 16 TiB [kích thước khối 4 KiB]
    • 32 TiB [kích thước khối 8 KiB]
máy lẻ3
  • Số lượng tệp tối đa. tối thiểu[volumeSize / 213, numberOfBlocks]
  • Kích thước tệp tối đa. giống như ext2
  • Kích thước âm lượng tối đa. giống như ext2
máy lẻ4
  • Số lượng tệp tối đa. 232 - 1 [4.294.967.295]
  • Số lượng tệp tối đa trên mỗi thư mục. vô hạn
  • Kích thước tệp tối đa. 244 - 1 byte [16 TiB - 1]
  • Kích thước âm lượng tối đa. 248 - 1 byte [256 TiB - 1]

Python – __init__ và self làm gì trong Python

Trong mã này

class A[object]:
    def __init__[self]:
        self.x = 'Hello'

    def method_a[self, foo]:
        print self.x + ' ' + foo

biến self đại diện cho thể hiện của chính đối tượng. Hầu hết các ngôn ngữ hướng đối tượng chuyển tham số này dưới dạng tham số ẩn cho các phương thức được xác định trên một đối tượng; . Bạn phải khai báo rõ ràng. Khi bạn tạo một thể hiện của lớp

input_str = raw_input["Please provide some info: "]
if len[input_str] > 15:
    print "Error! Only 15 characters allowed!"
    sys.exit[]
0 và gọi các phương thức của nó, nó sẽ tự động được truyền vào, như trong

a = A[]               # We do not pass any argument to the __init__ method
a.method_a['Sailor!'] # We only pass a single argument

Phương thức

input_str = raw_input["Please provide some info: "]
if len[input_str] > 15:
    print "Error! Only 15 characters allowed!"
    sys.exit[]
1 đại khái là đại diện cho một hàm tạo trong Python. Khi bạn gọi
input_str = raw_input["Please provide some info: "]
if len[input_str] > 15:
    print "Error! Only 15 characters allowed!"
    sys.exit[]
0, Python sẽ tạo một đối tượng cho bạn và chuyển nó làm tham số đầu tiên cho phương thức
input_str = raw_input["Please provide some info: "]
if len[input_str] > 15:
    print "Error! Only 15 characters allowed!"
    sys.exit[]
1. Bất kỳ tham số bổ sung nào [e. g. ,
input_str = raw_input["Please provide some info: "]
if len[input_str] > 15:
    print "Error! Only 15 characters allowed!"
    sys.exit[]
2] cũng sẽ được chuyển thành đối số--trong trường hợp này gây ra ngoại lệ, vì hàm tạo không mong đợi chúng

Chủ Đề