2013-02-22 42 views
23

Thiết kế một biểu thức tương đương logic để tuyên bố sau:Kiểm tra xem đối tượng là một số hoặc boolean

x là danh sách ba hoặc năm yếu tố, yếu tố thứ hai trong số đó là chuỗi 'Hip' và là người đầu tiên trong đó không phải là số hoặc Boolean.

Những gì tôi có:

x = ['Head', 'Hip', 10] 
print x[1] is 'Hip' 

Câu hỏi của tôi: Làm thế nào để bạn kiểm tra xem có hay không nó là một Boolean hoặc một số?

Trả lời

30

Để trả lời các câu hỏi cụ thể:

isinstance(x[0], (int, float)) 

kiểm tra này nếu x[0] là một thể hiện của bất kỳ các loại trong tuple (int, float).

Bạn cũng có thể thêm bool vào đó, nhưng không cần thiết, bởi vì bool chính nó là một phân lớp của int.

Doc tham khảo:


Để nhận xét về mã hiện tại của bạn, bạn không nên dựa vào interning of short strings. Bạn có nghĩa vụ phải so sánh chuỗi với các nhà điều hành ==:

x[1] == 'Hip' 
5
import types 
type(x) == types.BooleanType 
+0

'types.BooleanType' đã bị xóa khỏi Python 3.' bool' được sử dụng thay thế. Nguồn: http://www.diveintopython3.net/porting-code-to-python-3-with-2to3.html#types – KSR

16

dễ nhất tôi sẽ nói:

type(x) == type(True) 
+0

Một chút hacky nhưng không nhập, vì vậy +1 –

+9

Có thể trực tiếp 'type (x) là bool'? – lerner

3

Trong python3 này sẽ là: type(x)==bool thấy example.

+0

Mỏ hoạt động trong cả hai. Logic cũng chủ yếu là ngôn ngữ. – CurlyMo

Các vấn đề liên quan