Chương trình tính lương với python Xác thực đầu vào

Ý TƯỞNG. Xác thực đầu vào là quá trình kiểm tra dữ liệu đã được nhập vào một chương trình, để đảm bảo rằng dữ liệu đó hợp lệ trước khi được sử dụng trong tính toán. Xác thực đầu vào thường được thực hiện với một vòng lặp lặp lại miễn là một biến đầu vào tham chiếu dữ liệu xấu

Một trong những câu nói nổi tiếng nhất của các lập trình viên máy tính là "rác vào, rác ra". " Câu nói này, đôi khi được viết tắt là GIGO, đề cập đến thực tế là máy tính không thể phân biệt được dữ liệu tốt và dữ liệu xấu. Nếu người dùng cung cấp dữ liệu xấu làm đầu vào cho chương trình, chương trình sẽ xử lý dữ liệu xấu đó và kết quả là sẽ tạo ra dữ liệu xấu làm đầu ra. Ví dụ, hãy xem chương trình tính lương trong Chương trình 5-15 và để ý điều gì xảy ra trong lần chạy mẫu khi người dùng nhập dữ liệu sai

# Chương trình này hiển thị tổng tiền lương. chắc chắn chính[]

# Lấy số giờ làm việc

giờ = đầu vào ['Nhập số giờ làm việc trong tuần này

# Nhận mức lương hàng giờ

pay-rate = input['Nhập mức lương theo giờ. ']

# Tính tổng lương. tổng lương = số giờ * tỷ lệ trả

# Hiển thị tổng tiền lương. print 'Tổng tiền lương là

% Tổng mức lương

# Gọi hàm chính. Nó chính[]

Đầu ra chương trình [với đầu vào được in đậm]

Nhập số giờ làm việc trong tuần này. 400 [Enter] Nhập mức lương theo giờ. 20 [Nhập] Tổng tiền lương là $8000. 00

Bạn có phát hiện ra dữ liệu xấu được cung cấp làm đầu vào không? . Nhân viên bán hàng có lẽ muốn nhập 40, vì không có 400 giờ trong một tuần. Tuy nhiên, máy tính không biết về sự thật này và chương trình đã xử lý dữ liệu xấu như thể đó là dữ liệu tốt. Bạn có thể nghĩ ra các loại đầu vào khác có thể được cung cấp cho chương trình này sẽ dẫn đến kết quả đầu ra xấu không?

Đôi khi các câu chuyện được đưa tin trên bản tin về các lỗi máy tính nhầm lẫn khiến mọi người bị tính phí hàng nghìn đô la cho các khoản tiền nhỏ hoặc nhận được khoản hoàn thuế lớn mà họ không được hưởng. Tuy nhiên, những "lỗi máy tính" này hiếm khi do máy tính gây ra;

Tính toàn vẹn của đầu ra của chương trình chỉ tốt như tính toàn vẹn của đầu vào của nó. Vì lý do này, bạn nên thiết kế các chương trình của mình theo cách mà đầu vào xấu không bao giờ được chấp nhận. Khi đầu vào được cung cấp cho một chương trình, nó phải được kiểm tra trước khi được xử lý. Nếu đầu vào không hợp lệ, chương trình sẽ loại bỏ nó và nhắc người dùng nhập dữ liệu chính xác. Quá trình này được gọi là xác thực đầu vào

Hình 5-8 cho thấy một kỹ thuật phổ biến để xác thực một mục đầu vào. Trong kỹ thuật này, đầu vào được đọc và sau đó một vòng lặp được thực hiện. Nếu dữ liệu đầu vào không hợp lệ, vòng lặp sẽ thực thi khối câu lệnh của nó. Vòng lặp hiển thị thông báo lỗi để người dùng biết rằng đầu vào không hợp lệ và sau đó nó sẽ đọc đầu vào mới. Vòng lặp lặp lại miễn là đầu vào không hợp lệ

Hình 5-8 Logic chứa vòng lặp xác thực đầu vào

Hình 5-8 Logic chứa vòng lặp xác thực đầu vào

Lưu ý rằng lưu đồ trong Hình 5-8 đọc đầu vào ở hai vị trí. đầu tiên ngay trước vòng lặp và sau đó bên trong vòng lặp. Thao tác đầu vào đầu tiên—ngay trước vòng lặp—được gọi là đọc mồi và mục đích của nó là lấy giá trị đầu vào đầu tiên sẽ được kiểm tra bởi vòng lặp xác thực. Nếu giá trị đó không hợp lệ, vòng lặp sẽ thực hiện các thao tác nhập liệu tiếp theo

Hãy xem xét một ví dụ. Giả sử bạn đang thiết kế một chương trình đọc điểm kiểm tra và bạn muốn đảm bảo rằng người dùng không nhập giá trị nhỏ hơn 0. Đoạn mã sau cho biết cách bạn có thể sử dụng vòng lặp xác thực đầu vào để từ chối bất kỳ giá trị đầu vào nào nhỏ hơn 0

# Nhận điểm kiểm tra

# Hãy chắc chắn rằng nó không nhỏ hơn 0. khi điểm < 0

Đoạn mã này trước tiên nhắc người dùng nhập điểm kiểm tra [đây là phần đọc mồi], sau đó vòng lặp while thực thi. Nhớ lại rằng vòng lặp while là một vòng lặp kiểm tra trước, có nghĩa là nó kiểm tra điểm biểu thức < 0 trước khi thực hiện một phép lặp. Nếu người dùng đã nhập điểm kiểm tra hợp lệ, biểu thức này sẽ sai và vòng lặp sẽ không lặp lại. Tuy nhiên, nếu điểm kiểm tra không hợp lệ, biểu thức sẽ đúng và khối câu lệnh của vòng lặp sẽ thực thi. Vòng lặp hiển thị thông báo lỗi và nhắc người dùng nhập đúng điểm thi. Vòng lặp sẽ tiếp tục lặp cho đến khi người dùng nhập điểm kiểm tra hợp lệ

GHI CHÚ. Vòng lặp xác thực đầu vào đôi khi được gọi là bẫy lỗi hoặc trình xử lý lỗi

Mã này chỉ từ chối điểm kiểm tra tiêu cực. Nếu bạn cũng muốn từ chối bất kỳ điểm kiểm tra nào lớn hơn 100 thì sao?

# Nhận điểm kiểm tra

# Đảm bảo rằng nó không nhỏ hơn 0 hoặc lớn hơn 100. trong khi điểm < 0 hoặc điểm > 100

in 'LỖI. Điểm không được âm'

in 'hoặc lớn hơn 100. 1

score = input['Nhập đúng điểm. ']

Vòng lặp trong mã này xác định xem điểm nhỏ hơn 0 hay lớn hơn 100. Nếu một trong hai giá trị đúng, một thông báo lỗi sẽ hiển thị và người dùng được nhắc nhập điểm chính xác

Samantha sở hữu một doanh nghiệp nhập khẩu và cô ấy tính giá bán lẻ các sản phẩm của mình theo công thức sau

giá bán lẻ — chi phí bán buôn X 2. 5 Cô ấy hiện đang sử dụng chương trình được hiển thị trong Chương trình 5-16 để tính giá bán lẻ

Chủ Đề