Hướng dẫn dùng python cmp python

Hàm cmp[] trong Python 2 trả về dấu hiệu chỉ sự khác nhau giữa hai số: -1 nếu x < y, 0 nếu x == y, hoặc 1 nếu x > y.

Lưu ý: Hàm cmp[] chỉ có trong Python 2, nó đã bị loại bỏ trong Python 3.

Cú pháp

Cú pháp của hàm cmp[] trong Python 2:

Tham số:

  • x: Đây là một biểu thức số.

  • y: Đây cũng là một biểu thức số.

Ví dụ sau minh họa cách sử dụng của hàm cmp[] trong Python 2.

print "cmp[80, 100] : ", cmp[80, 100]
print "cmp[180, 100] : ", cmp[180, 100]
print "cmp[-80, 100] : ", cmp[-80, 100]
print "cmp[80, -100] : ", cmp[80, -100]

Chạy chương trình Python 2 trên sẽ cho kết quả:

cmp[80, 100] :  -1
cmp[180, 100] :  1
cmp[-80, 100] :  -1
cmp[80, -100] :  1

Ví dụ hàm cmp[] trong Python 3

Hàm cmp[] đã bị loại bỏ trong Python 3, vậy biểu thức này [a > b] - [a < b]

a = 100
b = 100
print ["cmp[80, 100] : ", [a > b] - [a < b]]
a = 80
b = 100
print ["cmp[80, 100] : ", [a > b] - [a < b]]
a = -80
b = -100
print ["cmp[80, 100] : ", [a > b] - [a < b]]

Chạy chương trình Python 2 trên sẽ cho kết quả:

cmp[80, 100] :  0
cmp[80, 100] :  -1
cmp[80, 100] :  1

answer

63

Như đã đề cập trong các nhận xét, cmpkhông tồn tại trong Python 3. Nếu bạn thực sự muốn nó, bạn có thể tự xác định nó:

def cmp[a, b]:
    return [a > b] - [a < b] 

được lấy từ Bản gốc có gì mới trong Python 3.0 . Tuy nhiên, nó khá hiếm - mặc dù không phải là chưa từng nghe - nhưng nó thực sự cần thiết, vì vậy bạn có thể muốn nghĩ xem đó có thực sự là cách tốt nhất để làm bất cứ điều gì bạn muốn hay không.

63 hữu ích 1 bình luận chia sẻ

answer

9

Trong Python 3.x bạn có thể import operatorvà điều hành sử dụng mô-đun của eq[], lt[], vv ... thay vìcmp[]

9 hữu ích 0 bình luận chia sẻ

answer

1

Khi cần ký hiệu, có lẽ cách thay thế an toàn nhất là sử dụng math.copysign:

import math
ang = -2
# alternative for cmp[ang, 0]:
math.copysign[1, ang]

# Result: -1

Đặc biệt nếu ang thuộc loại np.float64 vì toán tử '-' bị khấu hao. Thí dụ:

import numpy as np

def cmp_0[a, b]:
    return [a > b] - [a < b]

ang = np.float64[-2]
cmp_0[ang, 0]

# Result:
# DeprecationWarning: numpy boolean subtract, the `-` operator, is deprecated, 
# use the bitwise_xor, the `^` operator, or the logical_xor function instead.

thay vào đó người ta có thể sử dụng:

def cmp_0[a, b]:
    return bool[a > b] - bool[a < b]

ang = np.float64[-2]
cmp[ang, 0]
# Result: -1

1 hữu ích 0 bình luận chia sẻ

answer

0

Nếu a hoặc b là một đối tượng lớp, thì các câu trả lời trên sẽ có lỗi biên dịch như sau: Ví dụ: a là Class Clock: File "01_ClockClass_lab16.py", dòng 14, trong cmp return [a> b] - [a int [b]] - [int [a]

Chủ Đề