Computer >> Máy Tính >  >> Lập trình >> Python

Toán tử bậc ba trong Python?

Nhiều ngôn ngữ lập trình hỗ trợ toán tử bậc ba, về cơ bản định nghĩa một biểu thức điều kiện.

Tương tự, toán tử bậc ba trong python được sử dụng để trả về một giá trị dựa trên kết quả của điều kiện nhị phân. Nó nhận giá trị nhị phân (điều kiện) làm đầu vào, vì vậy nó trông tương tự như một khối điều kiện “if-else”. Tuy nhiên, nó cũng trả về một giá trị để hoạt động tương tự như một hàm.

Cú pháp

[on_true] if [expression] else [on_false]

Hãy viết một chương trình đơn giản, so sánh hai số nguyên -

một. Sử dụng câu lệnh if-else trong python -

>>> x, y = 5, 6
>>> if x>y:
   print("x")
else:
   print("y")
y

b. Sử dụng toán tử bậc ba

>>> x, y = 5, 6
>>> print("x" if x> y else "y")
y

Với toán tử bậc ba, chúng ta có thể viết mã trong một dòng. Vì vậy, về cơ bản, python đánh giá điều kiện đầu tiên, nếu đúng - đánh giá biểu thức đầu tiên, còn biểu thức đánh giá điều kiện thứ hai.

>>> def find_max(a,b):
return a if (a>b) else b
>>> find_max(5, 6)
6

Cách triển khai Toán tử bậc ba

Dưới đây là các cách khác nhau để triển khai toán tử bậc ba.

một. Sử dụng Python Tuples

>>> a, b = random(), random()
>>> (b, a) [a>b]
0.5497848117028667

Trên tương đương với -

>>> (b, a) [True]
0.5065247098746795

Nhưng nếu bạn nhầm lẫn với giá trị trả về là ‘a’ hoặc ‘b’. Hãy viết lại đoạn mã trên.

>>> (f"b:{b}", f"a:{a}") [a>b]
'b:0.5497848117028667'

b. Sử dụng từ điển Python

>>> a, b = random(), random()
>>> {False: f"b:{b}", True: f"a:{a}"}[a>b]
'a:0.8089581560973976'

Chúng ta có thể trao đổi cặp khóa-giá trị -

>>> {True: f"a:{a}", False: f"b:{b}"}[a>b]
'a:0.8089581560973976'

c. Sử dụng Lambdas

Chúng ta có thể sử dụng hàm python lambda để hoạt động như một toán tử bậc ba -

>>> (lambda: f"a:{a}", lambda: f"b:{b}")[a>b]()
'b:0.6780078581465793'

Toán tử bậc ba trong Python lồng nhau

Hãy thử xâu chuỗi các toán tử này -

>>> from random import random
>>> x = random()
>>> "Less than zero" if x<0 else "between 0 and 5" if a>=0 and a<=5 else "Greather than five"

Đầu ra

'between 0 and 5'

Hãy kiểm tra giá trị thực của x -

>>> x
0.08009251123993566