Hướng dẫn python cmp() function not defined - Hàm python cmp () không được xác định

Tôi không thể làm cho lệnh

Traceback [most recent call last]:
  File "G:\Dropbox\Code\a = [1,2,3]", line 3, in 
    c = cmp[a,b]
 NameError: name 'cmp' is not defined
[Finished in 0.1s]
9 hoạt động.

Đây là mã:

a = [1,2,3]
b = [1,2,3]
c = cmp[a,b]
print [c]

Tôi đang gặp lỗi:

Traceback [most recent call last]:
  File "G:\Dropbox\Code\a = [1,2,3]", line 3, in 
    c = cmp[a,b]
 NameError: name 'cmp' is not defined
[Finished in 0.1s]

hỏi ngày 18 tháng 3 năm 2014 lúc 20:30Mar 18, 2014 at 20:30

3

Như đã đề cập trong các bình luận,

def cmp[a, b]:
    return [a > b] - [a < b] 
0 khô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 những gì mới trong Python 3.0. Tuy nhiên, điều đó khá hiếm - mặc dù không phải là chưa từng thấy - rằng nó thực sự cần thiết, vì vậy, bạn có thể muốn nghĩ về việc liệu đó có thực sự là cách tốt nhất để làm bất cứ điều gì bạn đang làm.

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

DSMDSMDSM

327K62 Huy hiệu vàng573 Huy hiệu bạc480 Huy hiệu Đồng62 gold badges573 silver badges480 bronze badges

2

Trong Python 3.x, bạn có thể

def cmp[a, b]:
    return [a > b] - [a < b] 
1 và sử dụng mô -đun vận hành ____22,
def cmp[a, b]:
    return [a > b] - [a < b] 
3, v.v ... thay vì
Traceback [most recent call last]:
  File "G:\Dropbox\Code\a = [1,2,3]", line 3, in 
    c = cmp[a,b]
 NameError: name 'cmp' is not defined
[Finished in 0.1s]
9

Đã trả lời ngày 22 tháng 6 năm 2018 lúc 2:57Jun 22, 2018 at 2:57

Maxinmaxinmaxin

1011 Huy hiệu bạc2 Huy hiệu đồng1 silver badge2 bronze badges

Khi cần dấu hiệu, có lẽ sự 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ụ thể nếu ANG thuộc loại NP.Float64 vì khấu hao của toán tử '-'. 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

Đã trả lời ngày 18 tháng 7 năm 2019 lúc 7:03Jul 18, 2019 at 7:03

LeoleoLeo

1681 Huy hiệu bạc8 Huy hiệu đồng1 silver badge8 bronze badges

Thêm vào câu trả lời của @maxin, trong

def cmp[a, b]:
    return [a > b] - [a < b] 
5, nếu bạn muốn so sánh hai danh sách các bộ dữ liệu
def cmp[a, b]:
    return [a > b] - [a < b] 
6 và
def cmp[a, b]:
    return [a > b] - [a < b] 
7

import operator

a = [[1,2],[3,4]]
b = [[3,4],[1,2]]
# convert both lists to sets before calling the eq function
print[operator.eq[set[a],set[b]]] #True

Đã trả lời ngày 23 tháng 1 năm 2020 lúc 12:48Jan 23, 2020 at 12:48

ChidichidiChidi

80810 Huy hiệu bạc13 Huy hiệu đồng10 silver badges13 bronze badges

Mặc dù trong trường hợp chung, đây đều là những thay thế tốt cho

Traceback [most recent call last]:
  File "G:\Dropbox\Code\a = [1,2,3]", line 3, in 
    c = cmp[a,b]
 NameError: name 'cmp' is not defined
[Finished in 0.1s]
9, đối với trường hợp sử dụng thực tế được đưa ra bởi poster ban đầu, chắc chắn

a = [1,2,3]
b = [1,2,3]
c = a != b
print[c]

hoặc công bằng

a = [1,2,3]
b = [1,2,3]
print[a != b]

sẽ làm việc khá tốt.

Đã trả lời ngày 13 tháng 4 năm 2021 lúc 15:10Apr 13, 2021 at 15:10

Bạn có thể sử dụng cách này dễ dàng hơn

a=[1,2,3]
b=[1,2,3]
c=not[a!=b]
c
True

Đã trả lời ngày 25 tháng 7 lúc 6:25Jul 25 at 6:25

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ư dưới đây: Ví dụ: A là Lớp CLOCK:

Traceback [most recent call last]:
  File "G:\Dropbox\Code\a = [1,2,3]", line 3, in 
    c = cmp[a,b]
 NameError: name 'cmp' is not defined
[Finished in 0.1s]
0

Thay đổi loại bằng int [] để xóa lỗi:

Traceback [most recent call last]:
  File "G:\Dropbox\Code\a = [1,2,3]", line 3, in 
    c = cmp[a,b]
 NameError: name 'cmp' is not defined
[Finished in 0.1s]
1

Barmar

697K53 Huy hiệu vàng469 Huy hiệu bạc578 Huy hiệu Đồng53 gold badges469 silver badges578 bronze badges

Đã trả lời ngày 22 tháng 6 năm 2019 lúc 22:22Jun 22, 2019 at 22:22

Peter Chenpeter ChenPeter Chen

7275 Huy hiệu bạc2 Huy hiệu Đồng5 silver badges2 bronze badges

1

Hàm

Traceback [most recent call last]:
  File "G:\Dropbox\Code\a = [1,2,3]", line 3, in 
    c = cmp[a,b]
 NameError: name 'cmp' is not defined
[Finished in 0.1s]
9 này chỉ hoạt động trên Python phiên bản 2.x, nếu bạn cố gắng sử dụng nó trong phiên bản 3.x, nó sẽ gây ra lỗi:

Traceback [most recent call last]:
  File "G:\Dropbox\Code\a = [1,2,3]", line 3, in 
    c = cmp[a,b]
 NameError: name 'cmp' is not defined
[Finished in 0.1s]
2

Xem mã bên dưới:

Traceback [most recent call last]:
  File "G:\Dropbox\Code\a = [1,2,3]", line 3, in 
    c = cmp[a,b]
 NameError: name 'cmp' is not defined
[Finished in 0.1s]
3

output:

Traceback [most recent call last]:
  File "G:\Dropbox\Code\a = [1,2,3]", line 3, in 
    c = cmp[a,b]
 NameError: name 'cmp' is not defined
[Finished in 0.1s]
4

Mặc dù so sánh số nguyên cmp [] chỉ thực hiện phép trừ đối số của nó, trong trường hợp này là a -b, nếu phép trừ là -nó đã trả về -1 i.e ab

Traceback [most recent call last]:
  File "G:\Dropbox\Code\a = [1,2,3]", line 3, in 
    c = cmp[a,b]
 NameError: name 'cmp' is not defined
[Finished in 0.1s]
5

output:

Traceback [most recent call last]:
  File "G:\Dropbox\Code\a = [1,2,3]", line 3, in 
    c = cmp[a,b]
 NameError: name 'cmp' is not defined
[Finished in 0.1s]
6

Again:

Traceback [most recent call last]:
  File "G:\Dropbox\Code\a = [1,2,3]", line 3, in 
    c = cmp[a,b]
 NameError: name 'cmp' is not defined
[Finished in 0.1s]
7

output:

Traceback [most recent call last]:
  File "G:\Dropbox\Code\a = [1,2,3]", line 3, in 
    c = cmp[a,b]
 NameError: name 'cmp' is not defined
[Finished in 0.1s]
8

Khi cả hai đối số bằng nhau, tức là a = b, nó sẽ trả về 0 dưới dạng đầu ra. Ở đây, chúng tôi đã vượt qua hai loại giá trị chuỗi. Ở đây, cmp [] so sánh cả hai ký tự chuỗi theo ký tự và nếu được tìm thấy giống nhau thì trả về 0.

Đã trả lời ngày 7 tháng 4 năm 2021 lúc 6:40Apr 7, 2021 at 6:40

TaiietaieTaie

69710 Huy hiệu bạc25 Huy hiệu Đồng10 silver badges25 bronze badges

Làm thế nào để Python xác định CMP?

Phương thức Python - CMP [] CMP [] là một phần của thư viện tiêu chuẩn Python so sánh hai số nguyên.Kết quả so sánh là -1 nếu số nguyên đầu tiên nhỏ hơn thứ hai và 1 nếu số nguyên thứ nhất lớn hơn so với thứ hai.Nếu cả hai đều bằng kết quả của CMP [] bằng không.The cmp[] is part of the python standard library which compares two integers. The result of comparison is -1 if the first integer is smaller than second and 1 if the first integer is greater than the second. If both are equal the result of cmp[] is zero.

CMP có sẵn trong Python 3 không?

CMP [] không hoạt động trong Python 3..

Tại sao CMP bị xóa khỏi Python?

CMP đã bị xóa vì thuộc tính chính của .Sort [] và Sắp xếp [] là vượt trội trong hầu hết các trường hợp.Đó là một sự nắm giữ từ C nhiều hơn bất cứ thứ gì, và khó hiểu khi khởi động.because the key attribute to . sort[] and sorted[] is superior in most cases. It was a hold-over from C more than anything, and was confusing to boot.

CMP có được tích hợp trong chức năng không?

CMP [] là một hàm được xây dựng trong Python, nó được sử dụng để so sánh hai đối tượng và trả về giá trị theo các giá trị đã cho.Nó không trả về 'true' hoặc 'false' thay vì 'true' / 'false', nó trả về giá trị âm, 0 hoặc dương dựa trên đầu vào đã cho., it is used to compare two objects and returns value according to the given values. It does not return 'true' or 'false' instead of 'true' / 'false', it returns negative, zero or positive value based on the given input.

Bài Viết Liên Quan

Chủ Đề