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]
7import 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ắna = [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]
0Thay đổ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]
2Xem 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]
3output:
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]
4Mặ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]
5output:
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]
6Again:
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]
7output:
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]
8Khi 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