Hướng dẫn how to put constraints on input in python - cách đặt các ràng buộc đối với đầu vào trong python

1

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Tôi muốn người dùng có thể nhập tên của họ và đặt các ràng buộc để chỉ những thứ như chữ cái, thời gian và không gian được cho phép và phần còn lại (số, v.v.) ném lỗi.

Tôi đã thử sử dụng hàm isalpha () với câu lệnh if/other trong vòng một thời gian để tái cấu trúc người dùng nếu các số được bao gồm trong đầu vào.

Tuy nhiên Isalpha () chỉ chấp nhận các chữ cái, và không có gì khác. Ví dụ, người dùng nhập vào không gian hoặc thời gian như "Bob Smith", "Tiến sĩ Smith" hoặc "Anne-Marie" sẽ gây ra lỗi.

có ý tưởng nào để sửa cái này không? Cảm ơn

Hướng dẫn how to put constraints on input in python - cách đặt các ràng buộc đối với đầu vào trong python

hỏi ngày 20 tháng 3 năm 2020 lúc 7:06Mar 20, 2020 at 7:06

3

Đây là cách bạn có thể làm điều đó với các biểu thức thông thường. Chỉ cần kiểm tra xem chuỗi đầu vào chỉ chứa chars cho phép.
Just check if input string containing only allowed chars.

import re

def is_valid_name(str):
    pattern = "^[a-zA-Z\ \.\-]+$"
    return bool(re.search(pattern,str))

print is_valid_name("Bob Smith")
print is_valid_name("Dr. Smith")
print is_valid_name("Anne-Marie")
print is_valid_name("Anne!Marie")

Đã trả lời ngày 20 tháng 3 năm 2020 lúc 7:20Mar 20, 2020 at 7:20

AlekseyalekseyAleksey

7374 Huy hiệu bạc14 Huy hiệu đồng4 silver badges14 bronze badges

Tôi tin rằng bạn có thể làm điều gì đó như thế này:

def nameChecker(inputName):
    # Remove valid characters from the string
    validChars = [" ",".","-"]
    for char in validChars:
        inputName = inputName.replace(char,"")

    # Check if the remaining string is valid
    return inputName.isalpha()

Tôi tin rằng đó là những gì bạn đang tìm kiếm, xin vui lòng cho tôi biết nếu điều này phù hợp với bạn!

Đã trả lời ngày 20 tháng 3 năm 2020 lúc 7:23Mar 20, 2020 at 7:23

Hướng dẫn how to put constraints on input in python - cách đặt các ràng buộc đối với đầu vào trong python

EnriquebetenriquebetEnriqueBet

1.4322 Huy hiệu vàng13 Huy hiệu bạc22 Huy hiệu đồng2 gold badges13 silver badges22 bronze badges

Xác thực 8inputINPUT VALIDATION

Hướng dẫn how to put constraints on input in python - cách đặt các ràng buộc đối với đầu vào trong python

Mã xác thực đầu vào Kiểm tra các giá trị được nhập bởi người dùng, chẳng hạn như văn bản từ hàm input (), được định dạng chính xác. Ví dụ: nếu bạn muốn người dùng vào lứa tuổi của họ, mã của bạn không nên chấp nhận các câu trả lời vô nghĩa như số âm (nằm ngoài phạm vi số nguyên chấp nhận được) hoặc các từ (là loại dữ liệu sai). Xác thực đầu vào cũng có thể ngăn ngừa lỗi hoặc lỗ hổng bảo mật. Nếu bạn thực hiện hàm reREMFROMACCOUNT () có đối số cho số tiền trừ khỏi tài khoản, bạn cần đảm bảo số tiền là số dương. Nếu chức năng Rút tiền () sẽ trừ đi số âm từ tài khoản, thì việc rút tiền sẽ kết thúc việc thêm tiền!input() function, are formatted correctly. For example, if you want users to enter their ages, your code shouldn’t accept nonsensical answers such as negative numbers (which are outside the range of acceptable integers) or words (which are the wrong data type). Input validation can also prevent bugs or security vulnerabilities. If you implement a withdrawFromAccount() function that takes an argument for the amount to subtract from an account, you need to ensure the amount is a positive number. If the withdrawFromAccount() function subtracts a negative number from the account, the “withdrawal” will end up adding money!

Thông thường, chúng tôi thực hiện xác thực đầu vào bằng cách liên tục hỏi người dùng cho đầu vào cho đến khi họ nhập văn bản hợp lệ, như trong ví dụ sau:

Trong khi đúng: & nbsp; & nbsp; & nbsp; & nbsp; in ('Nhập tuổi của bạn:') ; & nbsp; & nbsp; & nbsp; & nbsp; tuổi = int (tuổi) ) & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; Vui lòng nhập một số dương. ') & Nbsp; & nbsp; & nbsp; & nbsp; & nbsp;
    print('Enter your age:')
    age = input()
    try:
        age = int(age)
    except:
        print('Please use numeric digits.')
        continue
    if age < 1:
        print('Please enter a positive number.')
        continue
    break

in (tuổi của bạn là {tuổi}. ')

Khi bạn chạy chương trình này, đầu ra có thể trông như thế này:

Nhập tuổi của bạn: Năm vui lòng sử dụng các chữ số số. Nhập tuổi của bạn: -2 Vui lòng nhập một số dương. Nhập tuổi của bạn: 30 Tuổi của bạn là 30.
five
Please use numeric digits.
Enter your age:
-2
Please enter a positive number.
Enter your age:
30
Your age is 30.

Khi bạn chạy mã này, bạn sẽ được nhắc tuổi của bạn cho đến khi bạn nhập một mã hợp lệ. Điều này đảm bảo rằng vào thời điểm thực hiện rời khỏi vòng lặp trong khi biến tuổi sẽ chứa một giá trị hợp lệ đã giành được sự cố của chương trình sau này.while loop, the age variable will contain a valid value that won’t crash the program later on.

Tuy nhiên, việc viết mã xác thực đầu vào cho mỗi cuộc gọi đầu vào () trong chương trình của bạn nhanh chóng trở nên tẻ nhạt. Ngoài ra, bạn có thể bỏ lỡ một số trường hợp nhất định và cho phép đầu vào không hợp lệ vượt qua séc của bạn. Trong chương này, bạn sẽ học cách sử dụng mô-đun PyInputPlus của bên thứ ba để xác thực đầu vào.input() call in your program quickly becomes tedious. Also, you may miss certain cases and allow invalid input to pass through your checks. In this chapter, you’ll learn how to use the third-party PyInputPlus module for input validation.

Mô -đun pyinputplus

Pyinputplus chứa các hàm tương tự như input () cho một số loại dữ liệu: số, ngày, địa chỉ email, v.v. Nếu người dùng từng nhập vào đầu vào không hợp lệ, chẳng hạn như ngày được định dạng xấu hoặc một số nằm ngoài phạm vi dự định, pyinputplus sẽ tái lập chúng để đầu vào giống như mã của chúng tôi trong phần trước đã làm. PyInputPlus cũng có các tính năng hữu ích khác như giới hạn số lần mà người dùng phải trả lại và thời gian chờ nếu người dùng được yêu cầu phản hồi trong giới hạn thời gian.input() for several kinds of data: numbers, dates, email addresses, and more. If the user ever enters invalid input, such as a badly formatted date or a number that is outside of an intended range, PyInputPlus will reprompt them for input just like our code in the previous section did. PyInputPlus also has other useful features like a limit for the number of times it reprompts users and a timeout if users are required to respond within a time limit.

Pyinputplus không phải là một phần của thư viện tiêu chuẩn Python, vì vậy bạn phải cài đặt nó riêng biệt bằng PIP. Để cài đặt pyinputplus, hãy chạy PIP Cài đặt -người sử dụng pyinputplus từ dòng lệnh. Phụ lục A có hướng dẫn đầy đủ để cài đặt các mô-đun bên thứ ba. Để kiểm tra xem pyinputplus đã cài đặt chính xác, hãy nhập nó vào shell tương tác:pip install --user pyinputplus from the command line. Appendix A has complete instructions for installing third-party modules. To check if PyInputPlus installed correctly, import it in the interactive shell:

>>> nhập pyinputplusimport pyinputplus

Nếu không có lỗi nào xuất hiện khi bạn nhập mô -đun, nó đã được cài đặt thành công.

Pyinputplus có một số chức năng cho các loại đầu vào khác nhau:

InputStr () giống như hàm input () tích hợp nhưng có các tính năng pyinputplus chung. Bạn cũng có thể chuyển chức năng xác thực tùy chỉnh cho nó Is like the built-in input() function but has the general PyInputPlus features. You can also pass a custom validation function to it

inputNum () đảm bảo người dùng nhập một số và trả về int hoặc float, tùy thuộc vào việc số có số thập phân trong đó Ensures the user enters a number and returns an int or float, depending on if the number has a decimal point in it

inputChoice () đảm bảo người dùng nhập một trong các lựa chọn được cung cấp Ensures the user enters one of the provided choices

inputMenu () tương tự như inputChoice (), nhưng cung cấp một menu với các tùy chọn được đánh số hoặc chữ cái Is similar to inputChoice(), but provides a menu with numbered or lettered options

inputDateTime () đảm bảo người dùng nhập ngày và giờ Ensures the user enters a date and time

inputyesno () đảm bảo người dùng nhập vào câu trả lời của vâng, hay không Ensures the user enters a “yes” or “no” response

inputBool () tương tự như inputyesno () Is similar to inputYesNo(), but takes a “True” or “False” response and returns a Boolean value

inputemail () đảm bảo người dùng nhập địa chỉ email hợp lệ Ensures the user enters a valid email address

inputFilePath () đảm bảo người dùng nhập đường dẫn tệp và tên tệp hợp lệ và có thể tùy chọn kiểm tra xem tệp có tên đó có tồn tại Ensures the user enters a valid file path and filename, and can optionally check that a file with that name exists

inputPassword () giống như đầu vào tích hợp (), nhưng hiển thị * ký tự là người dùng để loại mật khẩu hoặc thông tin nhạy cảm khác, aren được hiển thị trên màn hình Is like the built-in input(), but displays * characters as the user types so that passwords, or other sensitive information, aren’t displayed on the screen

Các chức năng này sẽ tự động tái cấu trúc người dùng miễn là chúng nhập vào đầu vào không hợp lệ:

>>> nhập pyinputplus dưới dạng pyip >>> phản hồi = pyip.inputnum () năm 'năm' không phải là số.42 >>> phản hồi 42import pyinputplus as pyip
>>> response = pyip.inputNum()
five
'five' is not a number.
42
>>> response
42

Mã PYIP trong câu lệnh nhập cứu chúng tôi không gõ pyinputplus mỗi lần chúng tôi muốn gọi hàm pyinputplus. Thay vào đó chúng ta có thể sử dụng tên PYIP ngắn hơn. Nếu bạn xem ví dụ, bạn sẽ thấy rằng không giống như Input (), các hàm này trả về giá trị int hoặc float: 42 và 3.14 thay vì các chuỗi '42' và '3.14'.as pyip code in the import statement saves us from typing pyinputplus each time we want to call a PyInputPlus function. Instead we can use the shorter pyip name. If you take a look at the example, you see that unlike input(), these functions return an int or float value: 42 and 3.14 instead of the strings '42' and '3.14'.

Giống như bạn có thể chuyển một chuỗi đến Input () để cung cấp lời nhắc, bạn có thể chuyển một chuỗi vào đối số từ khóa nhắc nhở của hàm PyInputPlus Chức năng để hiển thị lời nhắc:input() to provide a prompt, you can pass a string to a PyInputPlus function’s prompt keyword argument to display a prompt:

>>> Phản hồi = Đầu vào ('Nhập một số:') Nhập một số: 42 >>> Phản hồi '42' >>> Nhập pyinputplus dưới dạng pyip >>> phản hồi = pyip.inputInt (nhắc = 'Nhập một số:' ) Nhập một số: Cat 'Cat' không phải là một số nguyên. Nhập một số: 42 >>> Phản hồi 42response = input('Enter a number: ')
Enter a number: 42
>>> response
'42'
>>> import pyinputplus as pyip
>>> response = pyip.inputInt(prompt='Enter a number: ')
Enter a number: cat
'cat' is not an integer.
Enter a number: 42
>>> response
42

Sử dụng hàm Python Help Help () để tìm hiểu thêm về từng chức năng này. Ví dụ: trợ giúp (pyip.inputchoice) Hiển thị thông tin trợ giúp cho hàm inputChoice (). Tài liệu hoàn chỉnh có thể được tìm thấy tại https://pyinputplus.readthedocs.io/.help() function to find out more about each of these functions. For example, help(pyip.inputChoice) displays help information for the inputChoice() function. Complete documentation can be found at https://pyinputplus.readthedocs.io/.

Không giống như Python, đầu vào tích hợp (), các hàm pyinputplus có một số tính năng bổ sung để xác thực đầu vào, như được hiển thị trong phần tiếp theo.input(), PyInputPlus functions have several additional features for input validation, as shown in the next section.

Các đối số từ khóa Min, Max, Greaterthan và Lessthan

Các hàm inputNum (), inputInt () và inputFloat (), chấp nhận số int và float, cũng có các đối số từ khóa tối thiểu, tối đa, lớn hơn và lentthan để chỉ định một phạm vi giá trị hợp lệ. Ví dụ: nhập phần sau vào vỏ tương tác:inputNum(), inputInt(), and inputFloat() functions, which accept int and float numbers, also have min, max, greaterThan, and lessThan keyword arguments for specifying a range of valid values. For example, enter the following into the interactive shell:

>>> nhập pyinputplus dưới dạng pyip >>> phản hồi = pyip.inputnum ('nhập num:', min = 4) nhập num: 3 đầu vào phải ở mức tối thiểu 4. Nhập Num: 4 >>> Phản hồi 4 >>> Phản hồi = pyip.inputnum ('Nhập Num:', GreaterThan = 4) Nhập Num: 4 đầu vào phải lớn hơn 4. Nhập Num: 5 >>> Phản hồi 5 >>> Phản hồi = pyip.InputNum ('>', Min = 4, lentthan = 6) Nhập Num: 6 Đầu vào phải nhỏ hơn 6. Nhập Num: 3 Đầu vào phải ở mức tối thiểu 4. Nhập Num: 4 >>> Phản hồi 4import pyinputplus as pyip
>>> response = pyip.inputNum('Enter num: ', min=4)
Enter num:3
Input must be at minimum 4.
Enter num:4
>>> response
4
>>> response = pyip.inputNum('Enter num: ', greaterThan=4)
Enter num: 4
Input must be greater than 4.
Enter num: 5
>>> response
5
>>> response = pyip.inputNum('>', min=4, lessThan=6)
Enter num: 6
Input must be less than 6.
Enter num: 3
Input must be at minimum 4.
Enter num: 4
>>> response
4

Các đối số từ khóa này là tùy chọn, nhưng nếu được cung cấp, đầu vào không thể nhỏ hơn đối số tối thiểu hoặc lớn hơn đối số tối đa (mặc dù đầu vào có thể bằng với chúng). Ngoài ra, đầu vào phải lớn hơn so với lớn hơn và nhỏ hơn các đối số lentthan (nghĩa là đầu vào không thể bằng với chúng).min argument or greater than the max argument (though the input can be equal to them). Also, the input must be greater than the greaterThan and less than the lessThan arguments (that is, the input cannot be equal to them).

Đối số từ khóa trống

Theo mặc định, đầu vào trống không được phép trừ khi đối số từ khóa trống được đặt thành true:blank keyword argument is set to True:

>>> Nhập pyinputplus dưới dạng pyip >>> phản hồi = pyip.inputnum ('nhập num:') Nhập Num: (đầu vào trống được nhập vào đây) Không được phép các giá trị trống. Nhập Num: 42 >>> Phản hồi 42 >>> Phản hồi = pyip.inputnum (trống = true) (đầu vào trống được nhập vào đây) >>> phản hồi ''import pyinputplus as pyip
>>> response = pyip.inputNum('Enter num: ')
Enter num:(blank input entered here)
Blank values are not allowed.
Enter num: 42
>>> response
42
>>> response = pyip.inputNum(blank=True)
(blank input entered here)
>>> response
''

Sử dụng Blank = true nếu bạn muốn tạo tùy chọn đầu vào để người dùng không cần phải nhập bất cứ điều gì.blank=True if you’d like to make input optional so that the user doesn’t need to enter anything.

Giới hạn, thời gian chờ và đối số từ khóa mặc định

Theo mặc định, các hàm pyinputplus sẽ tiếp tục yêu cầu người dùng về đầu vào hợp lệ mãi mãi (hoặc miễn là chương trình chạy). Nếu bạn thích một chức năng để ngừng yêu cầu người dùng đầu vào sau một số lần thử nhất định hoặc một khoảng thời gian nhất định, bạn có thể sử dụng các đối số từ khóa giới hạn và thời gian chờ. Truyền một số nguyên cho đối số từ khóa giới hạn để xác định có bao nhiêu lần thử hàm pyinputplus sẽ thực hiện để nhận đầu vào hợp lệ trước khi từ bỏ và truyền một số nguyên cho đối số từ khóa hết thời gian để xác định số giây người dùng phải nhập đầu vào hợp lệ trước pyinputplus chức năng từ bỏ.limit and timeout keyword arguments. Pass an integer for the limit keyword argument to determine how many attempts a PyInputPlus function will make to receive valid input before giving up, and pass an integer for the timeout keyword argument to determine how many seconds the user has to enter valid input before the PyInputPlus function gives up.

Nếu người dùng không nhập vào đầu vào hợp lệ, các đối số từ khóa này sẽ khiến hàm tăng lần tương ứng hoặc TimeoutException, tương ứng. Ví dụ: nhập phần sau vào vỏ tương tác:RetryLimitException or TimeoutException, respectively. For example, enter the following into the interactive shell:

>>> nhập pyinputplus dưới dạng pyip >>> phản hồi = pyip.inputnum (giới hạn = 2) blah 'blah' không phải là một số. Nhập Num: Số 'Số' không phải là số. Traceback (cuộc gọi gần đây nhất cuối cùng): & nbsp; & nbsp; & nbsp; Gọi cuối cùng)import pyinputplus as pyip
>>> response = pyip.inputNum(limit=2)
blah
'blah' is not a number.
Enter num: number
'number' is not a number.
Traceback (most recent call last):
    --snip--
pyinputplus.RetryLimitException
>>> response = pyip.inputNum(timeout=10)
42 (entered after 10 seconds of waiting)
Traceback (most recent call last):
    --snip--
pyinputplus.TimeoutException

Khi bạn sử dụng các đối số từ khóa này và cũng vượt qua đối số từ khóa mặc định, hàm sẽ trả về giá trị mặc định thay vì tăng một ngoại lệ. Nhập phần sau vào vỏ tương tác:default keyword argument, the function returns the default value instead of raising an exception. Enter the following into the interactive shell:

>>> Phản hồi = pyip.inputnum (giới hạn = 2, mặc định = 'n/a') Xin chào 'Xin chào' không phải là số.world 'World' không phải là một số. >>> Phản hồi 'N/A'response = pyip.inputNum(limit=2, default='N/A')
hello
'hello' is not a number.
world
'world' is not a number.
>>> response
'N/A'

Thay vì nâng cao thử lại, hàm inputNum () chỉ đơn giản là trả về chuỗi 'n/a'.RetryLimitException, the inputNum() function simply returns the string 'N/A'.

Các đối số từ khóa cho phép và blockregexes từ khóa

Bạn cũng có thể sử dụng các biểu thức thông thường để chỉ định xem đầu vào có được phép hay không. Các đối số từ khóa cho phép và blockregexes lấy một danh sách các chuỗi biểu thức chính quy để xác định hàm pyinputplus sẽ chấp nhận hoặc từ chối là đầu vào hợp lệ. Ví dụ: nhập mã sau vào vỏ tương tác để inputNum () sẽ chấp nhận các chữ số La Mã ngoài các số thông thường:allowRegexes and blockRegexes keyword arguments take a list of regular expression strings to determine what the PyInputPlus function will accept or reject as valid input. For example, enter the following code into the interactive shell so that inputNum() will accept Roman numerals in addition to the usual numbers:

>>> Nhập pyinputplus dưới dạng pyip >>> phản hồi = pyip.inputnum (allowregexes = [r '(i | v | x | l | c | d | m)+', r'zero ']) 'XLII' >>> Phản hồi = pyip.inputnum (Cho phép regexes = [r '(i | v | x | l | c | d | m)+', r'zero ']) xlii >>> phản hồi' xlii 'import pyinputplus as pyip
>>> response = pyip.inputNum(allowRegexes=[r'(I|V|X|L|C|D|M)+', r'zero'])
XLII
>>> response
'XLII'
>>> response = pyip.inputNum(allowRegexes=[r'(i|v|x|l|c|d|m)+', r'zero'])
xlii
>>> response
'xlii'

Tất nhiên, Regex này chỉ ảnh hưởng đến những gì Chức năng InputNum () sẽ chấp nhận từ người dùng; Hàm vẫn sẽ chấp nhận các chữ số La Mã với thứ tự không hợp lệ, chẳng hạn như 'xvx' hoặc 'milli' vì r '(i | v | x | l | c | d | m)+' Biểu thức chính quy chấp nhận các chuỗi đó.inputNum() function will accept from the user; the function will still accept Roman numerals with invalid ordering such as 'XVX' or 'MILLI' because the r'(I|V|X|L|C|D|M)+' regular expression accepts those strings.

Bạn cũng có thể chỉ định một danh sách các chuỗi biểu thức chính quy mà hàm pyinputplus won won chấp nhận bằng cách sử dụng đối số từ khóa blockregexes. Nhập phần sau vào vỏ tương tác để inputNum () won đã chấp nhận số lượng chẵn:blockRegexes keyword argument. Enter the following into the interactive shell so that inputNum() won’t accept even numbers:

>>> Nhập pyinputplus dưới dạng pyip >>> phản hồi = pyip.inputnum (blockregexes = [r '[02468] $']) 42 Phản hồi này không hợp lệ.44 Phản hồi này không hợp lệ.43 >>> Phản hồi 43import pyinputplus as pyip
>>> response = pyip.inputNum(blockRegexes=[r'[02468]$'])
42
This response is invalid.
44
This response is invalid.
43
>>> response
43

Nếu bạn chỉ định cả đối số allowReGexes và blockregexes, danh sách cho phép sẽ ghi đè danh sách khối. Ví dụ: nhập phần sau vào vỏ tương tác, cho phép 'Caterpillar' và 'Danh mục' nhưng chặn bất cứ thứ gì khác có từ 'Cat' trong đó:allowRegexes and blockRegexes argument, the allow list overrides the block list. For example, enter the following into the interactive shell, which allows 'caterpillar' and 'category' but blocks anything else that has the word 'cat' in it:

>>> Nhập pyinputplus dưới dạng pyip >>> phản hồi = pyip.InputStr (urtinalregexes = [r'caterpillar ',' category '], blockregexes = [r'Cat']) CAT phản ứng này không hợp lệ. Danh mục >>> Phản hồi 'Danh mục'import pyinputplus as pyip
>>> response = pyip.inputStr(allowRegexes=[r'caterpillar', 'category'],
blockRegexes=[r'cat'])
cat
This response is invalid.
catastrophe
This response is invalid.
category
>>> response
'category'

Các chức năng của mô -đun PyInputPlus có thể tự cứu bạn khỏi việc tự viết mã xác thực đầu vào tẻ nhạt. Nhưng có nhiều hơn cho mô -đun PyInputPlus hơn những gì đã được chi tiết ở đây. Bạn có thể kiểm tra tài liệu đầy đủ của nó trực tuyến tại https://pyinputplus.readthedocs.io/.

Chuyển chức năng xác thực tùy chỉnh cho inputCustom ()

Bạn có thể viết một chức năng để thực hiện logic xác thực tùy chỉnh của riêng bạn bằng cách chuyển chức năng cho inputCustom (). Ví dụ: giả sử bạn muốn người dùng nhập một loạt các chữ số thêm tối đa 10. Không có chức năng pyinputplus.InputAddSuptoten (), nhưng bạn có thể tạo chức năng của riêng mình rằng:inputCustom(). For example, say you want the user to enter a series of digits that adds up to 10. There is no pyinputplus.inputAddsUpToTen() function, but you can create your own function that:

  • Chấp nhận một đối số chuỗi duy nhất về những gì người dùng đã nhập
  • Tăng một ngoại lệ nếu chuỗi không xác thực
  • Trả về không (hoặc không có câu lệnh trả về) nếu inputCustom () sẽ trả về chuỗi không thay đổiNone (or has no return statement) if inputCustom() should return the string unchanged
  • Trả về một giá trị không có khôngNone value if inputCustom() should return a different string from the one the user entered
  • Được truyền như là đối số đầu tiên cho InputCustom ()inputCustom()

Ví dụ: chúng ta có thể tạo hàm addsuptoten () của riêng mình, và sau đó chuyển nó sang inputCustom (). Lưu ý rằng lệnh gọi hàm trông giống như inputCustom (addsuptoten) và không inputCustom (addsuptoten ()) vì chúng tôi đang chuyển hàm addsuptoten () để inputCustom (), không gọi thêm thêm () và truyền giá trị trả về của nó.addsUpToTen() function, and then pass it to inputCustom(). Note that the function call looks like inputCustom(addsUpToTen) and not inputCustom(addsUpToTen()) because we are passing the addsUpToTen() function itself to inputCustom(), not calling addsUpToTen() and passing its return value.

>>> Nhập pyinputplus dưới dạng pyip >>> def addsuptoten (số): ... & nbsp; & nbsp; & nbsp; numberList = list (số) ... & nbsp; ... ; ... >>> Phản hồi = pyip.InputCustom (addsuptoten) # Không có dấu ngoặc đơn sau khi thêm vào đây.123 Các chữ số phải thêm tối đa 10 đã trả về một int, không phải là một chuỗi. 1234 >>> Phản hồi = pyip.InputCustom (thêmimport pyinputplus as pyip
>>> def addsUpToTen(numbers):
...   numbersList = list(numbers)
...   for i, digit in enumerate(numbersList):
...     numbersList[i] = int(digit)
...   if sum(numbersList) != 10:
...     raise Exception('The digits must add up to 10, not %s.' %
(sum(numbersList)))
...   return int(numbers) # Return an int form of numbers.
...
>>> response = pyip.inputCustom(addsUpToTen) # No parentheses after
addsUpToTen here.
123
The digits must add up to 10, not 6.
1235
The digits must add up to 10, not 11.
1234
>>> response # inputStr() returned an int, not a string.
1234
>>> response = pyip.inputCustom(addsUpToTen)
hello
invalid literal for int() with base 10: 'h'
55
>>> response

Hàm inputCustom () cũng hỗ trợ các tính năng pyinputplus chung, chẳng hạn như trống, giới hạn, thời gian chờ, mặc định, cho phép regexes và các đối số từ khóa blockregexes. Viết chức năng xác thực tùy chỉnh của riêng bạn là hữu ích khi nó khác khó hoặc không thể viết một biểu thức thông thường cho đầu vào hợp lệ, như trong ví dụ cộng với 10 ví dụ.inputCustom() function also supports the general PyInputPlus features, such as the blank, limit, timeout, default, allowRegexes, and blockRegexes keyword arguments. Writing your own custom validation function is useful when it’s otherwise difficult or impossible to write a regular expression for valid input, as in the “adds up to 10” example.

Dự án: Làm thế nào để giữ một thằng ngốc bận rộn trong nhiều giờ

Hãy để sử dụng pyinputplus để tạo một chương trình đơn giản thực hiện như sau:

  1. Hỏi người dùng nếu họ muốn biết làm thế nào để giữ cho một thằng ngốc bận rộn trong nhiều giờ.
  2. Nếu người dùng trả lời không, thoát.
  3. Nếu người dùng trả lời có, hãy chuyển sang bước 1.

Tất nhiên, chúng tôi không biết liệu người dùng sẽ nhập một cái gì đó bên cạnh đó là có hay hay không, vì vậy chúng tôi cần thực hiện xác thực đầu vào. Nó cũng sẽ thuận tiện cho người dùng để có thể nhập vào Y Y hoặc hoặc N N, thay vì các từ đầy đủ. Chức năng pyinputplus từ đầu vào () pyinputplus sẽ xử lý việc này cho chúng tôi và, bất kể trường hợp người dùng nhập vào trường hợp nào, hãy trả lại giá trị chuỗi chữ thường 'có' hoặc 'không'.inputYesNo() function will handle this for us and, no matter what case the user enters, return a lowercase 'yes' or 'no' string value.

Khi bạn chạy chương trình này, nó sẽ trông giống như sau:

Bạn muốn biết làm thế nào để giữ cho một kẻ ngốc bận rộn trong nhiều giờ? Chắc chắn 'chắc chắn' không phải là một phản hồi có/không hợp lệ. Bạn muốn biết làm thế nào để giữ cho một thằng ngốc bận rộn trong nhiều giờ? Có muốn biết cách giữ một thằng ngốc bận rộn trong nhiều giờ? Ywant để biết cách giữ một thằng ngốc bận rộn trong nhiều giờ? Có Bạn muốn biết cách giữ một thằng ngốc trong nhiều giờ? Có Bạn muốn biết làm thế nào để giữ một thằng ngốc bận rộn trong nhiều giờ? Có !!!!!! 'VÂNG!!!!!!' không phải là một phản hồi có/không hợp lệ. Bạn muốn biết làm thế nào để giữ cho một thằng ngốc bận rộn trong nhiều giờ? Hãy cho tôi biết làm thế nào để giữ một thằng ngốc bận rộn trong nhiều giờ. 'Hãy cho tôi biết làm thế nào để giữ một thằng ngốc bận rộn trong nhiều giờ.' không phải là một phản hồi có/không hợp lệ. Bạn muốn biết làm thế nào để giữ một thằng ngốc bận rộn trong nhiều giờ? Không, cảm ơn bạn. Chúc một ngày tốt lành.
sure
'sure' is not a valid yes/no response.
Want to know how to keep an idiot busy for hours?
yes
Want to know how to keep an idiot busy for hours?
y
Want to know how to keep an idiot busy for hours?
Yes
Want to know how to keep an idiot busy for hours?
YES
Want to know how to keep an idiot busy for hours?
YES!!!!!!
'YES!!!!!!' is not a valid yes/no response.
Want to know how to keep an idiot busy for hours?
TELL ME HOW TO KEEP AN IDIOT BUSY FOR HOURS.
'TELL ME HOW TO KEEP AN IDIOT BUSY FOR HOURS.' is not a valid yes/no response.
Want to know how to keep an idiot busy for hours?
no
Thank you. Have a nice day.

Mở tab Trình chỉnh sửa tệp mới và lưu nó dưới dạng Idiot.py. Sau đó nhập mã sau:

nhập pyinputplus dưới dạng pyip

Điều này nhập mô -đun pyinputplus. Vì pyinputplus là một chút để gõ, chúng tôi sẽ sử dụng tên PYIP.pyinputplus is a bit much to type, we’ll use the name pyip for short.

Trong khi đúng: & nbsp; & nbsp; & nbsp; & nbsp; nhắc nhở = 'muốn biết cách giữ một kẻ ngốc bận rộn trong nhiều giờ?
    prompt = 'Want to know how to keep an idiot busy for hours?\n'
    response = pyip.inputYesNo(prompt)

Tiếp theo, trong khi đúng: Tạo một vòng lặp vô hạn tiếp tục chạy cho đến khi nó gặp một tuyên bố phá vỡ. Trong vòng lặp này, chúng tôi gọi pyip.inputyesno () để đảm bảo rằng cuộc gọi chức năng này won sẽ trả về cho đến khi người dùng nhập câu trả lời hợp lệ.while True: creates an infinite loop that continues to run until it encounters a break statement. In this loop, we call pyip.inputYesNo() to ensure that this function call won’t return until the user enters a valid answer.

& nbsp; & nbsp; & nbsp; & nbsp; nếu phản hồi == 'không': & nbsp;
        break

Cuộc gọi pyip.inputyesno () được đảm bảo chỉ trả về chuỗi có hoặc chuỗi không. Nếu nó trở lại không, thì chương trình của chúng tôi sẽ thoát ra khỏi vòng lặp vô hạn và tiếp tục đến dòng cuối cùng, cảm ơn người dùng:pyip.inputYesNo() call is guaranteed to only return either the string yes or the string no. If it returned no, then our program breaks out of the infinite loop and continues to the last line, which thanks the user:

In ('Cảm ơn bạn. Chúc một ngày tốt lành.')

Nếu không, vòng lặp lặp lại một lần nữa.

Bạn cũng có thể sử dụng hàm inputyesNo () trong các ngôn ngữ không phải tiếng Anh bằng cách truyền các đối số từ khóa YesVal và Noval. Ví dụ: phiên bản tiếng Tây Ban Nha của chương trình này sẽ có hai dòng sau:inputYesNo() function in non-English languages by passing yesVal and noVal keyword arguments. For example, the Spanish version of this program would have these two lines:

& nbsp; & nbsp; & nbsp; & nbsp; prompt = ' 'Không')
    response = pyip.inputYesNo(prompt, yesVal='sí', noVal='no')
    if response == 'sí':

Bây giờ người dùng có thể nhập Sí hoặc S (ở dưới hoặc dưới) thay vì có hoặc y cho câu trả lời khẳng định. or s (in lower- or uppercase) instead of yes or y for an affirmative answer.

Dự án: Bài kiểm tra nhân

Các tính năng của PyInputPlus có thể hữu ích để tạo một bài kiểm tra nhân thời gian. Bằng cách đặt cho phép reforregexes, blockregexes, thời gian chờ và giới hạn đối số từ khóa thành pyip.inputstr (), bạn có thể để lại hầu hết các triển khai cho pyinputplus. Bạn càng cần viết càng ít mã, bạn càng có thể viết chương trình của mình càng nhanh. Hãy để tạo ra một chương trình đặt ra 10 vấn đề nhân cho người dùng, trong đó đầu vào hợp lệ là câu trả lời đúng của vấn đề. Mở tab Trình chỉnh sửa tệp mới và lưu tệp dưới dạng nhân đa.allowRegexes, blockRegexes, timeout, and limit keyword argument to pyip.inputStr(), you can leave most of the implementation to PyInputPlus. The less code you need to write, the faster you can write your programs. Let’s create a program that poses 10 multiplication problems to the user, where the valid input is the problem’s correct answer. Open a new file editor tab and save the file as multiplicationQuiz.py.

Đầu tiên, chúng tôi sẽ nhập pyinputplus, ngẫu nhiên và thời gian. Chúng tôi sẽ theo dõi số lượng câu hỏi mà chương trình hỏi và có bao nhiêu câu trả lời chính xác mà người dùng đưa ra với các biến số formorOfQuestions và orrectanSwers. A for Loop sẽ liên tục đặt ra một bài toán nhân ngẫu nhiên 10 lần:pyinputplus, random, and time. We’ll keep track of how many questions the program asks and how many correct answers the user gives with the variables numberOfQuestions and correctAnswers. A for loop will repeatedly pose a random multiplication problem 10 times:

Nhập pyinputplus dưới dạng nhập khẩu PYIP ngẫu nhiên, thời gian
import random, time

NumberOfQuestions = 10 orporManSwers = 0 cho bảng câu hỏi trong phạm vi (numberOfQuestions):
correctAnswers = 0
for questionNumber in range(numberOfQuestions):

Bên trong vòng lặp For, chương trình sẽ chọn hai số một chữ số để nhân. Chúng tôi sẽ sử dụng các số này để tạo dấu nhắc #Q: N × N = cho người dùng, trong đó q là số câu hỏi (1 đến 10) và n là hai số để nhân.for loop, the program will pick two single-digit numbers to multiply. We’ll use these numbers to create a #Q: N × N = prompt for the user, where Q is the question number (1 to 10) and N are the two numbers to multiply.

    

# Chọn hai số ngẫu nhiên: & nbsp; & nbsp; & nbsp; & nbsp; num1 = Random.randint (0, 9) & nbsp; & nbsp; & nbsp; & nbsp; num2 = Random.randint (0, 9)
    num1 = random.randint(0, 9)
    num2 = random.randint(0, 9)

& nbsp;

Hàm pyip.InputStr () sẽ xử lý hầu hết các tính năng của chương trình đố này. Đối số chúng tôi vượt qua cho ApertreRegexes là một danh sách với chuỗi regex '^ %s $', trong đó %s được thay thế bằng câu trả lời đúng. Các ký tự ^ và % đảm bảo rằng câu trả lời bắt đầu và kết thúc bằng số chính xác, mặc dù pyinputplus cắt bất kỳ khoảng trắng nào từ đầu và kết thúc phản hồi của người dùng trước tiên chỉ trong trường hợp họ vô tình nhấn máy bay không gian trước hoặc sau khi trả lời. Đối số chúng tôi vượt qua cho blocklistregexes là một danh sách với ('.*', 'Không chính xác!'). Chuỗi đầu tiên trong tuple là một regex phù hợp với mọi chuỗi có thể. Do đó, nếu phản hồi của người dùng không phù hợp với câu trả lời chính xác, chương trình sẽ từ chối bất kỳ câu trả lời nào khác mà họ cung cấp. Trong trường hợp đó, 'không chính xác!' Chuỗi được hiển thị và người dùng được nhắc trả lời lại. Ngoài ra, việc vượt qua 8 cho thời gian chờ và 3 cho giới hạn sẽ đảm bảo rằng người dùng chỉ có 8 giây và 3 lần cố gắng cung cấp câu trả lời đúng:pyip.inputStr() function will handle most of the features of this quiz program. The argument we pass for allowRegexes is a list with the regex string '^%s$', where %s is replaced with the correct answer. The ^ and % characters ensure that the answer begins and ends with the correct number, though PyInputPlus trims any whitespace from the start and end of the user’s response first just in case they inadvertently pressed the spacebar before or after their answer. The argument we pass for blocklistRegexes is a list with ('.*', 'Incorrect!'). The first string in the tuple is a regex that matches every possible string. Therefore, if the user response doesn’t match the correct answer, the program will reject any other answer they provide. In that case, the 'Incorrect!' string is displayed and the user is prompted to answer again. Additionally, passing 8 for timeout and 3 for limit will ensure that the user only has 8 seconds and 3 tries to provide a correct answer:

& nbsp; & nbsp; & nbsp; & nbsp; thử: & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; = [('.*', 'Không chính xác!')], & Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; ; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;
        # Right answers are handled by allowRegexes.
        # Wrong answers are handled by blockRegexes, with a custom message.
        pyip.inputStr(prompt, allowRegexes=['^%s$' % (num1 * num2)],
                              blockRegexes=[('.*', 'Incorrect!')],
                              timeout=8, limit=3)

Nếu người dùng trả lời sau thời gian chờ 8 giây đã hết hạn, ngay cả khi họ trả lời chính xác, pyip.inputstr () sẽ tăng ngoại lệ thời gian chờ. Nếu người dùng trả lời không chính xác hơn 3 lần, nó sẽ tăng một ngoại lệ thử lại. Cả hai loại ngoại lệ này đều nằm trong mô -đun PyInputPlus, vì vậy PYIP. Cần phải trả chúng:pyip.inputStr() raises a TimeoutException exception. If the user answers incorrectly more than 3 times, it raises a RetryLimitException exception. Both of these exception types are in the PyInputPlus module, so pyip. needs to prepend them:

& nbsp; & nbsp; : & NBSP; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;
        print('Out of time!')
    except pyip.RetryLimitException:
        print('Out of tries!')

Hãy nhớ rằng, giống như cách các khối khác có thể theo khối IF hoặc Elif, chúng có thể tùy ý làm theo khối cuối cùng ngoại trừ. Mã bên trong khối khác sẽ chạy nếu không có ngoại lệ nào được nêu trong khối thử. Trong trường hợp của chúng tôi, điều đó có nghĩa là mã chạy nếu người dùng nhập đúng câu trả lời:else blocks can follow an if or elif block, they can optionally follow the last except block. The code inside the following else block will run if no exception was raised in the try block. In our case, that means the code runs if the user entered the correct answer:

& nbsp; & nbsp; & nbsp; & nbsp; other: & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;
        # This block runs if no exceptions were raised in the try block.
        print('Correct!')
        correctAnswers += 1

Bất kể trong ba tin nhắn nào, thì Out Out of Time! đọc nó. Sau khi chương trình đã hỏi 10 câu hỏi và Loop tiếp tục, hãy để cho người dùng hiển thị cho người dùng có bao nhiêu câu trả lời chính xác mà họ đã thực hiện:for loop to give the user time to read it. After the program has asked 10 questions and the for loop continues, let’s show the user how many correct answers they made:

& nbsp; & nbsp; & nbsp; & nbsp; thời gian.s ngủ (1) # Tạm dừng ngắn gọn để cho người dùng nhìn thấy kết quả. In ('Điểm: %s / %s' %(orporManSwers, numberOfQuestions))
print('Score: %s / %s' % (correctAnswers, numberOfQuestions))

PyInputPlus đủ linh hoạt để bạn có thể sử dụng nó trong nhiều chương trình khác nhau lấy đầu vào bàn phím từ người dùng, như được chứng minh bởi các chương trình trong chương này.

Bản tóm tắt

Thật dễ dàng để quên viết mã xác thực đầu vào, nhưng không có nó, các chương trình của bạn gần như chắc chắn sẽ có lỗi. Các giá trị bạn mong đợi người dùng nhập và các giá trị họ thực sự nhập có thể hoàn toàn khác nhau và các chương trình của bạn cần đủ mạnh để xử lý các trường hợp đặc biệt này. Bạn có thể sử dụng các biểu thức thông thường để tạo mã xác thực đầu vào của riêng mình, nhưng đối với các trường hợp phổ biến, nó dễ dàng sử dụng một mô -đun hiện có, chẳng hạn như pyinputplus. Bạn có thể nhập mô -đun với PyInputPlus Nhập dưới dạng PYIP để bạn có thể nhập một tên ngắn hơn khi gọi các chức năng mô -đun.import pyinputplus as pyip so that you can enter a shorter name when calling the module’s functions.

PyInputPlus có các chức năng để nhập nhiều loại đầu vào, bao gồm chuỗi, số, ngày, có/không, đúng/sai, email và tệp. Trong khi Input () luôn trả về một chuỗi, các hàm này trả về giá trị trong một loại dữ liệu phù hợp. Hàm inputChoice () cho phép bạn chọn một trong một số tùy chọn được chọn trước, trong khi inputMenu () cũng thêm số hoặc chữ cái để lựa chọn nhanh.True/False, emails, and files. While input() always returns a string, these functions return the value in an appropriate data type. The inputChoice() function allow you to select one of several pre-selected options, while inputMenu() also adds numbers or letters for quick selection.

Tất cả các chức năng này đều có các tính năng tiêu chuẩn sau: tước khoảng trắng từ các cạnh, đặt thời gian chờ và giới hạn thử lại với thời gian chờ và giới hạn các đối số từ khóa và truyền danh sách các chuỗi biểu thức chính quy để cho phép refexes hoặc blockregexes để bao gồm hoặc loại trừ các phản hồi cụ thể. Bạn sẽ không còn cần phải viết tẻ nhạt trong khi các vòng lặp kiểm tra đầu vào hợp lệ và tái lập người dùng.timeout and limit keyword arguments, and passing lists of regular expression strings to allowRegexes or blockRegexes to include or exclude particular responses. You'll no longer need to write your own tedious while loops that check for valid input and reprompt the user.

Nếu không có mô -đun pyinputplus, các hàm phù hợp với nhu cầu của bạn, nhưng bạn vẫn thích các tính năng khác mà pyinputplus cung cấp, bạn có thể gọi inputCustom () và truyền chức năng xác thực tùy chỉnh của riêng bạn cho pyinputplus sử dụng. Tài liệu tại https://pyinputplus.readthedocs.io/en/latest/ có một danh sách đầy đủ các chức năng của PyInputPlus và các tính năng bổ sung. Có rất nhiều trong tài liệu trực tuyến của PyInputPlus so với những gì được mô tả trong chương này. Không có việc sử dụng trong việc phát minh lại bánh xe và học cách sử dụng mô -đun này sẽ giúp bạn không phải viết và gỡ lỗi mã cho chính mình.inputCustom() and pass your own custom validation function for PyInputPlus to use. The documentation at https://pyinputplus.readthedocs.io/en/latest/ has a complete listing of PyInputPlus’s functions and additional features. There’s far more in the PyInputPlus online documentation than what was described in this chapter. There’s no use in reinventing the wheel, and learning to use this module will save you from having to write and debug code for yourself.

Bây giờ bạn có chuyên môn thao tác và xác thực văn bản, đã đến lúc tìm hiểu cách đọc và ghi vào các tệp trên ổ cứng máy tính của bạn.

Thực hành câu hỏi

1. Pyinputplus có đi kèm với thư viện tiêu chuẩn Python không?

2. Tại sao pyinputplus thường được nhập với nhập pyinputplus dưới dạng pyip?import pyinputplus as pyip?

3. Sự khác biệt giữa inputInt () và inputFloat () là gì?inputInt() and inputFloat()?

4. Làm thế nào bạn có thể đảm bảo rằng người dùng nhập toàn bộ số từ 0 đến 99 bằng pyinputplus?0 and 99 using PyInputPlus?

5. Những gì được chuyển cho các đối số từ khóa cho phép và blockregexes?allowRegexes and blockRegexes keyword arguments?

6. InputStr (giới hạn = 3) làm gì nếu nhập vào đầu vào ba lần?inputStr(limit=3) do if blank input is entered three times?

7. InputStr (giới hạn = 3, mặc định = 'xin chào') làm gì nếu nhập vào đầu vào ba lần?inputStr(limit=3, default='hello') do if blank input is entered three times?

Thực hành các dự án

Để thực hành, hãy viết các chương trình để thực hiện các nhiệm vụ sau.

Sandwich Maker

Viết một chương trình yêu cầu người dùng về sở thích bánh sandwich của họ. Chương trình nên sử dụng pyinputplus để đảm bảo rằng chúng nhập đầu vào hợp lệ, chẳng hạn như:

  • Sử dụng InputMenu () cho loại bánh mì: Lúa mì, trắng hoặc bột chua.inputMenu() for a bread type: wheat, white, or sourdough.
  • Sử dụng InputMenu () cho loại protein: gà, gà tây, giăm bông hoặc đậu phụ.inputMenu() for a protein type: chicken, turkey, ham, or tofu.
  • Sử dụng InputyesNo () để hỏi họ có muốn phô mai không.inputYesNo() to ask if they want cheese.
  • Nếu vậy, sử dụng inputmenu () để yêu cầu loại phô mai: cheddar, swiss hoặc mozzarella.inputMenu() to ask for a cheese type: cheddar, Swiss, or mozzarella.
  • Sử dụng Inputyesno () để hỏi họ có muốn mayo, mù tạt, rau diếp hay cà chua không.inputYesNo() to ask if they want mayo, mustard, lettuce, or tomato.
  • Sử dụng inputInt () để hỏi họ muốn có bao nhiêu bánh sandwich. Hãy chắc chắn rằng con số này là 1 trở lên.inputInt() to ask how many sandwiches they want. Make sure this number is 1 or more.

Đưa ra giá cho mỗi tùy chọn này và chương trình của bạn hiển thị tổng chi phí sau khi người dùng nhập lựa chọn của họ.

Viết bài kiểm tra nhân của riêng bạn

Để xem pyinputplus đang làm bao nhiêu cho bạn, hãy thử tự mình tạo lại dự án bài kiểm tra nhân mà không cần nhập nó. Chương trình này sẽ nhắc nhở người dùng với 10 câu hỏi nhân, từ 0 × 0 đến 9 × 9. Bạn sẽ cần thực hiện các tính năng sau:

  • Nếu người dùng nhập câu trả lời đúng, chương trình sẽ hiển thị đúng! trong 1 giây và chuyển sang câu hỏi tiếp theo.
  • Người dùng có ba lần thử để nhập câu trả lời chính xác trước khi chương trình chuyển sang câu hỏi tiếp theo.
  • Tám giây sau lần đầu tiên hiển thị câu hỏi, câu hỏi được đánh dấu là không chính xác ngay cả khi người dùng nhập câu trả lời đúng sau giới hạn 8 giây.

So sánh mã của bạn với mã bằng PyInputPlus trong Dự án: Bài kiểm tra nhân trên trang 196.

Làm thế nào để bạn hạn chế đầu vào trong Python?

Giới hạn đầu vào của người dùng vào một phạm vi trong Python #..
Sử dụng vòng lặp thời gian để lặp lại cho đến khi giá trị đầu vào được cung cấp nằm trong phạm vi ..
Trên mỗi lần lặp, kiểm tra xem giá trị có nằm trong phạm vi được chỉ định không ..
Nếu điều kiện được đáp ứng, hãy sử dụng câu lệnh break để thoát ra khỏi vòng lặp ..

Làm thế nào để bạn giới hạn đầu vào cho các số nguyên trong Python?

Để chỉ cho phép đầu vào người dùng số nguyên: Sử dụng vòng lặp thực sự để lặp cho đến khi người dùng nhập số nguyên. Sử dụng lớp int () để cố gắng chuyển đổi giá trị người dùng đã nhập thành một số nguyên. Nếu người dùng nhập một số nguyên, hãy sử dụng câu lệnh break để thoát ra khỏi vòng lặp.Use a while True loop to loop until the user enters an integer. Use the int() class to attempt to convert the value the user entered to an integer. If the user entered an integer, use the break statement to break out of the loop.

Làm thế nào để bạn thêm xác thực đầu vào trong Python?

Thực hiện xác thực đầu vào trong Python..
Sử dụng thử ... ngoại trừ câu lệnh để kiểm tra xem đầu vào của người dùng có hợp lệ trong Python không ..
Sử dụng hàm isDigit () để kiểm tra xem đầu vào của người dùng có hợp lệ trong python không ..

Làm thế nào để tôi chỉ cho phép một số đầu vào nhất định trong Python?

Để chỉ chấp nhận số làm đầu vào người dùng: Sử dụng vòng lặp thực sự để lặp cho đến khi người dùng nhập một số.Sử dụng lớp float () để cố gắng chuyển đổi giá trị thành số điểm nổi.Nếu người dùng nhập một số, hãy sử dụng câu lệnh break để thoát ra khỏi vòng lặp.Use a while True loop to loop until the user enters a number. Use the float() class to attempt to convert the value to a floating-point number. If the user entered a number, use the break statement to break out of the loop.