Cara Menggunakan Operator Ternary Python
Diterbitkan: 2023-01-04Panduan ini akan mengajari Anda cara menggunakan operator ternary dengan Python. Anda akan mempelajari sintaks dan kode beberapa contoh untuk memahami cara kerjanya.
Kita akan mulai dengan meninjau bagaimana pernyataan bersyarat if-else bekerja dan kemudian belajar bagaimana menulis ekspresi yang setara menggunakan operator ternary.
Selanjutnya, kita akan membuat kode beberapa contoh dan kemudian mempelajari cara meniru perilaku operator ternary Python menggunakan tuple dan kamus Python. Terakhir, kami akan meninjau beberapa kasus penggunaan saat Anda lebih suka menggunakan operator ternary.
Mari kita mulai!
Pernyataan If-Else dengan Python: Tinjauan
Anda dapat membuat kode bersama dengan memulai Python REPL atau di editor Python online Geekflare.
Sintaks generik dari pernyataan if-else di Python adalah sebagai berikut:
if condition: # do this else: # do this
Dalam cuplikan di atas, condition
menunjukkan kondisi yang akan diperiksa. Jika kondisi bernilai True
, maka blok if dipicu. Jika kondisi bernilai False
, maka pernyataan di dalam blok else akan dieksekusi.
Berikut adalah contoh di mana variabel game_over
diberi nilai Boolean tergantung pada apakah nilai energy
kurang dari atau sama dengan nol.
- Jika
energy <= 0
,game_over
adalahTrue
. - Jika tidak,
game_over
adalah Salah.
Cuplikan kode berikut menunjukkan cara melakukannya menggunakan pernyataan bersyarat if-else:
energy = -1 if energy <= 0: game_over = True else: game_over = False print(game_over) # True
Dalam contoh ini, energy
adalah -1 yang kurang dari 0. Jadi game_over
adalah True.
Operator Python Ternary: Sintaks dan Contoh
Python memiliki operator ternary yang bekerja sangat mirip dengan operator kondisional ternary dalam bahasa seperti C dan C++. Sintaks umum untuk menggunakannya adalah sebagai berikut:
expression1 if condition else expression2
Mari kita parsing sintaks di atas:
-
condition
: Kondisi yang akan diperiksa. -
expression1
: Ekspresi untuk mengevaluasi apakah kondisinya Benar. -
expression2
: Ekspresi untuk mengevaluasi apakah kondisinya Salah.
Sekarang, kita akan mengidentifikasi expression1
, expression2
, dan condition
apa yang seharusnya dari versi kode if-else.
Menyatukan semuanya, kami memiliki yang berikut menggunakan operator ternary Python.
game_over = True if energy <= 0 else False print(game_over) # True
Mari kode contoh lain. Misalkan Anda menjalankan toko buku dan Anda memberikan diskon kepada pembaca untuk pembelian mereka tergantung pada seberapa sering mereka mengunjungi toko Anda dalam setahun terakhir.
Biarkan numVisits
menunjukkan jumlah kunjungan.
- Jika
numVisits > 7
, persentase diskon,discount_perc
adalah 20. - Jika tidak,
discount_perc
adalah 5.
Kami menggunakan operator ternary untuk menetapkan nilai ke variabel discount_perc
.
numVisits = 10 discount_perc = 20 if numVisits > 7 else 5 print(discount_perc) # 20 (as numVisits = 10 which is > 7)
Selanjutnya, kita akan mempelajari cara meniru operator ternary menggunakan tuple Python dan kamus.
Meniru Ternary Operator dengan Python Tuple
Seperti semua iterables di Python, tupel mengikuti pengindeksan nol. Jadi jika Anda memiliki dua elemen dalam sebuah tuple, tuple_name[0]
menunjukkan elemen pertama dalam tuple dan tuple_name[1]
memberikan elemen kedua dalam tuple.
Tipe data dasar di Python adalah integer, float, string, dan Boolean. Python mendukung pengecoran tipe yang memungkinkan Anda merepresentasikan tipe data tertentu dengan representasi yang setara dalam tipe data lain.
Mulai REPL Python dan jalankan contoh berikut. Jika Anda mencoba mengonversi bilangan bulat ke Boolean, Anda akan melihat hal berikut:
-
bool(0)
False
. -
bool(<any non-zero integer>)
mengembalikanTrue
.
>>> bool(0) False >>> bool(1) True >>> bool(-1) True >>> bool(10) True
Demikian pula, saat mentransmisikan Boolean ke bilangan bulat, kami memiliki yang berikut:
>>> int(True) 1 >>> int(False) 0
Menyatukan pengecoran tipe dan pengindeksan, kita dapat melakukan hal berikut:
- Elemen pada indeks 0 di dalam tupel: Nilai yang akan digunakan saat
condition
adalahFalse
. - Elemen pada indeks 1 dalam tupel: Nilai yang akan digunakan saat
condition
adalahTrue
.
Menggunakan hal di atas, kami memiliki yang berikut:
>>> numVisits = 10 >>> discount_perc = (5,20)[numVisits > 7] >>> discount_perc # 20
Di sini, kondisi numVisits > 7
adalah True
karena numVisits
adalah 10. Karena int(True)
adalah 1, nilai discount_perc
adalah 20, elemen pada indeks 1.
Meniru Operator Ternary dengan Kamus Python
Anda dapat mengatur True
dan False
sebagai kunci kamus. Dan Anda dapat menetapkan expression1
dan expression2
sebagai nilai yang masing-masing sesuai dengan kunci True
dan False
.
some_dict = {True: expression1, False: expression2 }
Apa yang Anda lakukan selanjutnya? Sekarang jika Anda menggunakan some_dict[condition]
, expression1
yang sesuai dengan kunci True
akan dievaluasi jika condition
True
. Dan expression2
dievaluasi saat condition
False
.
Mari kode contoh discount_perc
(lagi) tapi kali ini menggunakan kamus Python.
>>> numVisits = 10 >>> discount_dict = {True: 20, False:5} >>> discount_perc = discount_dict[numVisits > 7] >>> discount_perc # 20
Di sini, numVisits = 10
yang lebih besar dari 7. Oleh karena itu, kondisi numVisits > 7
adalah True
. Jadi discount_dict[numVisits > 7]
dievaluasi menjadi discount_dict[True]
yang merupakan nilai 20.
Haruskah Anda Selalu Menggunakan Operator Ternary Python?
Sejauh ini, kita telah mempelajari cara menggunakan operator ternary. Tetapi haruskah kita selalu menggunakan operator ternary? Yah, operator ternary mungkin bukan pilihan terbaik untuk semua kasus penggunaan. Bagian ini menjelaskan kapan Anda lebih suka menggunakan operator ternary daripada pernyataan if-else. Kami juga akan membahas kapan kami harus mempertimbangkan untuk menggunakan pernyataan if-else daripada operator ternary.
Lebih Ringkas Daripada Blok If-Else
Seperti disebutkan, dalam Python, ekspresi operator ternary lebih ringkas daripada pernyataan if-else. Oleh karena itu, Anda dapat menggunakannya untuk memeriksa kondisi dan mengevaluasi ekspresi secara kondisional dengan cepat.
Dalam contoh berikut, nums
adalah daftar 100 bilangan bulat yang dihasilkan secara acak. Untuk masing-masing dari 100 angka, kami memeriksa apakah ganjil atau genap. Dan evaluasi ini terjadi sebaris di dalam f-string.
import random nums = [random.choice(range(100)) for i in range(10)] for num in nums: print(f"{num} is {'even' if num%2==0 else 'odd'}")
# sample output 0 is even 56 is even 6 is even 53 is odd 62 is even 7 is odd 8 is even 77 is odd 41 is odd 94 is even
Operator Ternary Membutuhkan Else Clause
Saat Anda menggunakan pernyataan bersyarat if-else, klausa else bersifat opsional. Mari kita ambil contoh. Variabel game_over
disetel ke True
jika energy
turun ke nilai kurang dari atau sama dengan nol.
Namun, jika energy
lebih besar dari nol, variabel game_over
tidak pernah diinisialisasi. Jadi, Anda akan mengalami kesalahan jika mencoba mengakses variabel game_over
.
energy = 5 if energy <= 0: game_over = True print(f"Is the game over? {game_over}")
Traceback (most recent call last): File "ternary_op.py", line 39, in <module> print(f"Is the game over? {game_over}") NameError: name 'game_over' is not defined
Salah satu cara untuk memperbaikinya adalah dengan menyetel game_over
ke False
pada awalnya dan memperbaruinya ke True
jika level energinya kurang dari atau sama dengan nol.
energy = 5 game_over = False if energy <= 0: game_over1 = True print(f"Is the game over? {game_over}")
Namun, saat menggunakan operator Python ternary yang setara di atas, klausa else bukan opsional. Operator ternary membutuhkan ekspresi untuk dievaluasi ketika condition
adalah False
.
game_over = True if energy <= 0 else False
Jika Anda mengubah di atas menjadi game_over = True if energy <= 0
dengan menghapus bagian else, Anda akan mengalami kesalahan sintaksis, seperti yang ditunjukkan:
File "ternary_op.py", line 42 game_over = True if energy <= 0 ^ SyntaxError: invalid syntax
Untuk Memeriksa Beberapa Ketentuan, Gunakan Pernyataan If-Else
Pertimbangkan contoh: Setiap pertanyaan dalam satu set pertanyaan wawancara pengkodean memiliki skor kesulitan yang terkait. Bergantung pada skor ini, kami menetapkan salah satu dari tiga tingkat kesulitan: mudah, sedang, atau sulit, untuk pertanyaan tertentu. Misalkan kita memiliki yang berikut:
Skor | Tingkat kesulitan |
Kurang dari 10 | mudah |
Antara 10 dan 20 | medium |
Lebih besar dari 20 | keras |
Mengingat skor kesulitannya, Anda bisa mendapatkan tingkat kesulitannya menggunakan operator Python ternary seperti yang ditunjukkan:
score = 12 difficulty_level = "easy" if score < 10 else "hard" if score > 20 else "medium" print(difficulty_level) # medium
Ekspresi operator ternary pada blok kode di atas berbentuk sebagai berikut:
expression1 if condition1 else expression2 if condition2 else expression3
Meskipun ringkas, agak sulit untuk dibaca dan diurai. Gambar berikut menunjukkan bagaimana aliran kontrol terjadi dalam kasus ini.
Cuplikan kode berikut menunjukkan implementasi yang setara menggunakan pernyataan if-else. Seperti yang terlihat, alur kontrol jauh lebih mudah dipahami, dan kodenya lebih mudah dibaca.
if score < 10: difficulty_level="easy" elif score > 20: difficulty_level="hard" else: difficulty_level="medium" print(difficulty_level)
Oleh karena itu, ketika Anda memiliki banyak kondisi, Anda harus menggunakan blok if-else daripada operator ternary. Ini memastikan bahwa kode mudah dibaca dan dipahami.
Selain itu, saat Anda perlu menjalankan beberapa pernyataan—bergantung pada apakah kondisinya benar atau salah—Anda harus mempertimbangkan untuk menggunakan pernyataan if-else.
Kesimpulan
Berikut adalah rekap dari apa yang telah Anda pelajari dalam tutorial ini.
- Di Python, operator ternary dapat digunakan dengan sintaks berikut:
expression1 if condition else expression2
. - Anda dapat meniru perilaku operator ternary menggunakan tupel dan kamus Python.
- Meskipun operator ternary bisa menjadi alternatif yang lebih ringkas untuk blok if-else, Anda harus memastikan bahwa kodenya dapat dibaca. Untuk meningkatkan keterbacaan kode, Anda dapat menggunakan pernyataan if-else alih-alih operator ternary, terutama saat Anda perlu merangkai beberapa kondisi.
Selanjutnya, pelajari tutorial tentang operator yang sama dan tidak sama dengan Python.