Kiểm tra là float python

Trong bài tập này chúng ta sẽ thực hiện hành động kiểm tra dữ liệu mà người dùng nhập vào là số hay chuỗi, đây là cách giúp bạn kiểm soát dữ liệu nhập vào phù hợp với yêu cầu của bài toán

Bài viết này đã được đăng tại freetuts. mạng, không được sao chép dưới mọi hình thức

Giả sử bạn viết một chương trình tính toán tìm số lớn nhất trong 3 số, và yêu cầu chống lại việc nhập vào ba số đó. Lúc này nếu người dùng nhập vào một chuỗi thì sẽ sai, vì vậy ta cần kiểm tra định dạng của nó trước khi thực hiện chương trình

1. Kiểu dữ liệu mà Python nhận từ người dùng là gì?

Chúng ta hãy bàn về Python 3 thôi nhé, còn Python 2 thì mình không đề cập đến trong series này

Trong Python, để tiếp nhận dữ liệu từ người dùng, bạn sử dụng hàm input. Bạn có biết hàm này sẽ trả về dữ liệu ở định dạng không có gì không? . Hãy làm ví dụ sau để hiểu rõ hơn

Bài viết này đã được đăng tại [free tuts. net]

print ["Chương trình đăng tại freetuts.net"]
number = input["Nhập số "]
string = input["Nhập chuỗi "]

print["\n"]
print["Kiểu dữ liệu vừa nhập là: "]
print["Number ", type[number]]
print["String ", type[string]]

Kết quả như sau

Như bạn đã thấy, mặc dù biến số mình nhập vào là số 12 nhưng nó vẫn là kiểu chuỗi

Bây giờ ta sẽ học cách kiểm tra định dạng của nó nhé

2. Cách kiểm tra dữ liệu là chuỗi hay số trong Python

Trong Python, chúng ta có thể sử dụng nhiều cách khác nhau để kiểm tra dữ liệu đầu vào là chuỗi hay số

Cách 1. Chuyển đổi thành int hoặc float để kiểm tra đầu vào là số hay chuỗi

Với cách này, ta sử dụng hai hàm int[]float[] để ép kiểu dữ liệu, dựa trên kết quả trả về ta sẽ biết chính xác người dùng nhập vào một chuỗi hay một số

Ta must set it in try. ngoại trừ, do hai hàm ép kiểu trên sẽ không thể ép một chuỗi thành một số trong trường hợp giá trị của chuỗi không phải là số. Ví dụ bạn chuyển chuỗi "freetuts. net" thành số là hoàn toàn sai

Quá trình kiểm tra như sau. Nếu ép kiểu thành công thì là số, ngược lại thì một ngoại lệ sẽ bị bung ra nên nó là một chuỗi

print ["Chương trình đăng tại freetuts.net"]
user_input = input["Nhập tuổi của bạn "]

print["\n"]
try:
    val = int[user_input]
    print["Dữ liệu nhập vào là int = ", val]
except ValueError:
    try:
        val = float[user_input]
        print["Dữ liệu nhâp vào là float = ", val]
    except ValueError:
        print["Dữ liệu nhập vào không phải là number"]

cách 2. Use isdigit function to check a number or string

Hàm này công dụng khá đơn giản như sau

print ["Chương trình đăng tại freetuts.net"]
num = input["Nhập số của bạn "]

print["\n"]
if num.isdigit[]:
    print["Dữ liệu nhập vào là số "]
else:
    print["Dữ liệu nhập vào là chuỗi "]

Tuy nhiên, this function master active with a positive integer. Nếu bạn nhập vào là một số thực hoặc một số âm thì nó sẽ trả về là một chuỗi. Vì vậy, giải pháp tốt nhất vẫn là chọn phương án 1 nhé cả nhà

3. Viết chương trình nhập vào một số bằng Python

Bây giờ ta sẽ viết chương trình ép người dùng nhập vào là một số, nếu họ nhập vào là một chuỗi thì yêu cầu nhập lại

while True:
    num = input["Vui lòng nhập vào một con số nhé! "]
    try:
        val = int[num]
        print["Dữ liệu bạn nhập vào là số."]
        print["Giá trị của nó là: ", val]
        break; # Thoát khỏi vòng lặp
    except ValueError:
        try:
            float[num]
            print["Dữ liệu nhập vào là float"]
            print["Giá trị của nó là: ", val]
            break; # Thoát khỏi vòng lặp
        except ValueError:
            print["Đây không phải là một số, vui lòng nhập lại!"]

Chạy chương trình này lên và thử nhập vào một chuỗi xem sao nhé, chắc chắn rằng nó sẽ yêu cầu nhập lại cho khi bạn nhập vào đó là một số

Sử dụng hàm isinstance[] để kiểm tra xem một số là int hay float, e. g. if isinstance[my_num, int]:. Hàm isinstance sẽ trả về True nếu đối tượng được truyền vào là một thể hiện của lớp được cung cấp [int hoặc float]

Chúng tôi đã sử dụng hàm isinstance[] để kiểm tra xem một số là int hay float

Hàm trả về True nếu đối tượng được truyền vào là một thể hiện hoặc lớp con của lớp được truyền vào

Hàm isinstance[] trả về chính xác xem đối tượng được truyền vào là một thể hiện hay một lớp con của lớp được cung cấp

Tuy nhiên, có một trường hợp cạnh - booleans cũng là một thể hiện của số nguyên

Điều này là do lớp isinstance[]2 là lớp con của lớp int

Nếu bạn cần kiểm tra xem một số là int hay float, hãy chuyển một bộ chứa các lớp intfloat trong lệnh gọi hàm isinstance[]

Đối số thứ hai mà hàm isinstance nhận có thể là một lớp hoặc một bộ chứa nhiều lớp

Lệnh gọi hàm trên kiểm tra xem đối tượng được truyền vào là một int hay một float

Sử dụng một if isinstance[my_num, int]:0 trong lệnh gọi hàm tương đương với việc sử dụng hai lệnh gọi với toán tử if isinstance[my_num, int]:1

Chủ Đề