Cara Menggunakan Operator Ternary Python

Diterbitkan: 2023-01-04

Panduan 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 adalah True .
  • 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-ternary-operator-1

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.

ternary-op-ex1

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>) mengembalikan True .
 >>> 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 adalah False .
  • Elemen pada indeks 1 dalam tupel: Nilai yang akan digunakan saat condition adalah True .

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?

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.

contoh-operator-ternary

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.