Program Python pada Operasi String

Diterbitkan: 2022-04-26

Dalam tutorial ini, Anda akan menulis program Python untuk menyelesaikan pertanyaan umum tentang operasi string .

Anda akan mempelajari cara memeriksa apakah string Python adalah palindrom , anagram , dan berada di dalam kasus judul .

String Python: Tinjauan Singkat

Dalam Python, string adalah tipe data bawaan yang kuat. Mereka dapat menyimpan urutan karakter.

Pengindeksan dalam String Python: Seperti semua iterable Python, string juga diindeks nol. Jadi indeks yang valid untuk string dengan panjang N adalah 0, 1, 2 sampai dengan N – 1.

python-string

Python juga mendukung pengindeksan negatif untuk mengakses elemen dari akhir string. Jadi -1 adalah indeks karakter terakhir dalam string, -2 adalah indeks karakter kedua hingga terakhir dalam string, dan seterusnya.

Kekekalan String Python : Selain itu, string dalam Python tidak dapat diubah, jadi Anda tidak dapat memodifikasinya di tempat. Namun, Anda dapat memanggil beberapa metode string dan mendapatkan salinan string dengan hasil yang diinginkan.

Sekarang kita telah meninjau dasar-dasar string Python, mari kita lanjutkan untuk memecahkan beberapa masalah sederhana namun menarik.

Ayo mulai.

Periksa apakah String Python adalah Palindrome

Masalah : Diberikan string Python, periksa apakah itu palindrom atau bukan.

Jika ya, kembalikan Benar; lain, kembalikan Salah.

Jadi masalah pertama kita adalah memeriksa apakah string yang diberikan adalah palindrom atau tidak.

Palindrom adalah string yang dibaca sama dari kiri ke kanan serta dari kanan ke kiri. Mari kita daftarkan beberapa contoh: mobil balap, referensi, level, madam, radar, dan seterusnya.

python-string-palindrome

Berikut langkah-langkah untuk mengatasi masalah ini:

  • Dapatkan salinan terbalik dari string dan simpan di variabel lain, jika diperlukan.
  • Bandingkan nilai string asli dan string terbalik.
  • Jika mereka sama, string adalah palindrom. Jadi kembalikan True , dan berhenti.
  • Jika salinan asli dan salinan terbalik tidak sama, string bukan palindrom. Jadi kita harus mengembalikan False .

Operasi kuncinya adalah untuk mendapatkan salinan string yang dibalik. Dengan Python, ada beberapa cara berbeda yang bisa Anda lakukan.

Namun, kami akan membahas dua pendekatan:

  • Menggunakan pengiris tali
  • Menggunakan fungsi reversed() dan metode join()

Cara Membalikkan String Python Menggunakan Slicing

Sintaks <any_str>[start: stop: step] mengembalikan sepotong string <any_str> dari start hingga tetapi tidak termasuk stop , dengan ukuran step .

  • Jika Anda menghilangkan start , irisan dimulai di awal string.
  • Jika Anda tidak menentukan indeks stop , irisan akan diperpanjang hingga akhir string.
  • Dan nilai negatif dari step dapat digunakan untuk mengembalikan irisan mulai dari akhir string.

Jadi <any_str>[::-1] mengembalikan salinan string yang terbalik.

Sel kode berikut berisi definisi fungsi is_palindrome() .

Dibutuhkan string sebagai argumen, dan mengembalikan True atau False tergantung pada apakah itu palindrom atau tidak.

Di sini, kami telah menggunakan pengirisan string untuk mendapatkan salinan terbalik dari string.

 def is_palindrome(this_str): rev_str = this_str[::-1] if (this_str == rev_str): return True else: return False

️ Sekarang setelah kita mendefinisikan fungsinya, kita dapat melanjutkan dan memanggil dengan string yang valid sebagai argumen.

 is_palindrome("racecar") True

Dalam sel kode di atas, racecar adalah palindrom. Jadi fungsi is_palindrome() mengembalikan True seperti yang diharapkan.

Sekarang, coba panggil fungsi dengan string apa pun yang bukan palindrom, seperti river .

 is_palindrome("river") False

Dan seperti yang Anda lihat, ia mengembalikan False , yang benar.

Cara Membalikkan String Python Menggunakan reversed() dan join()

Dalam Python, Anda dapat menggunakan metode join() bersama dengan fungsi reversed() untuk membalikkan string.

  • Fungsi reversed() mengembalikan iterator terbalik melalui karakter dalam string.
  • Metode join() kemudian dapat digunakan untuk menggabungkan karakter-karakter tersebut dalam urutan terbalik.

Dengan menggunakan metode di atas, Anda dapat menulis ulang fungsi is_palindrome() seperti pada sel kode di bawah ini.

 def is_palindrome(this_str): rev_str = ''.join(reversed(this_str)) if (this_str == rev_str): return True else: return False

Anda juga dapat menggunakan fungsi is_palindrome() di dalam pemahaman daftar untuk mengumpulkan semua palindrom dari daftar string yang lebih panjang.

 str_list = ["refer","blue","level","12321","dragon"] palindromes = [string for string in str_list if is_palindrome(string)] print(palindromes) # Output ['refer', 'level', '12321']

Berikut cara kerja kode di atas:

  • str_list , panggil is_palindrome() pada setiap string.
  • Jika is_palindrome() mengembalikan True , tambahkan string ke daftar palindromes .

Seperti yang Anda lihat pada output di atas, palindromes adalah daftar semua string palindrom di str_list .

Periksa apakah Dua String Python adalah Anagram

Pertanyaan populer lainnya yang mungkin Anda temui dalam wawancara adalah untuk memeriksa apakah sepasang string str1 dan str2 adalah anagram atau bukan.

Dua string dikatakan anagram jika jumlah karakter dalam dua string sama persis. Ini berarti bahwa Anda dapat memperoleh salah satu string dengan mengubah atau mengatur ulang karakter dalam string lainnya.

Contoh anagram antara lain state-taste, save-vase, elbow-below, dan sebagainya.

python-string-anagram

Cara Memeriksa Anagram Menggunakan Objek Penghitung dengan Python

Cara sederhana dan intuitif adalah menghitung jumlah kemunculan setiap karakter dalam dua string. Dan kemudian periksa apakah jumlahnya sama.

Ini dapat dilakukan dengan lebih mudah menggunakan objek Counter dari modul itertools . Objek Penghitung mengembalikan kamus Python: dengan karakter sebagai kunci dan jumlah yang sesuai sebagai nilai .

Pertimbangkan string "save" dan "vase" seperti yang ditunjukkan di bawah ini.

 str1 = "save" str2 = "vase"

Di sini, c1 dan c2 adalah objek penghitung yang berisi jumlah karakter dari string str1 dan str2 masing-masing.

 from collections import Counter c1 = Counter(str1) c2 = Counter(str2) print(c1) print(c2) c1 == c2 # Output Counter({'s': 1, 'a': 1, 'v': 1, 'e': 1}) Counter({'v': 1, 'a': 1, 's': 1, 'e': 1}) True

c1 == c2 mengembalikan True karena str1 dan str2 adalah anagram.

Dengan menggunakan logika ini, sekarang kita dapat melanjutkan dan mendefinisikan fungsi are_anagrams() dengan dua parameter word1 dan word2 . Di badan fungsi, kami memeriksa apakah Counter(word1) == Counter(word2) .

 def are_anagrams(word1, word2): if Counter(word1) == Counter(word2): return True else: return False

️ Untuk memverifikasi, panggil are_anagrams() dengan str1 , str2 sebagai argumen. Karena str1 dan str2 adalah anagram ("simpan" dan "vas"), fungsi mengembalikan True , yang benar.

 are_anagrams(str1, str2) True

Cara Memeriksa Anagram Menggunakan Salinan String yang Diurutkan

Ada cara lain yang bisa Anda lakukan.

Jika dua string adalah anagram, maka salinan yang diurutkan adalah sama.

Jadi kita dapat menulis ulang fungsi are_anagrams() untuk memeriksa apakah versi str1 yang diurutkan sama dengan salinan str2 yang diurutkan. Jika keduanya sama, maka kedua string tersebut adalah anagram; lain, mereka tidak.

Menggunakan metode di atas untuk memeriksa kesetaraan salinan yang diurutkan, kita dapat menulis ulang fungsi are_anagrams() sebagai berikut.

 def are_anagrams(word1, word2): if sorted(word1) == sorted(word2): return True else: return False

Sekarang mari kita membuat beberapa panggilan fungsi.

  • String "elbow" dan "below" adalah anagram dan fungsi are_anagrams() mengembalikan True .
  • Dan "status" dan "terasa" bukan anagram, dan fungsinya mengembalikan False .
 are_anagrams("below","elbow") True are_anagrams("state","tasted") False

Periksa apakah String Python ada dalam Judul Kasus

Inilah pertanyaan terakhir kami untuk tutorial ini.

Masalah : Diberi string: nama seseorang—dengan nama depan dan nama belakang.

Anda harus memeriksa apakah huruf pertama dari nama depan dan nama belakang menggunakan huruf kapital.

Jenis huruf besar di mana huruf pertama setiap kata ditulis dengan huruf kapital disebut huruf besar .

Jadi, Anda harus memeriksa apakah namanya ada dalam kasus judul:

1. Jika ya, keluarkan pesan bahwa pemformatan dalam huruf besar/kecil.

2. Jika tidak, kembalikan salinan string yang diformat dalam kasus judul

python-string-title-case
  • Python memiliki built-in metode string istitle() , yang memeriksa apakah sebuah string dalam kasus judul.

<str>.istitle() mengembalikan True jika string <str> diformat dalam kasus judul, jika tidak maka akan mengembalikan False .

  • Dan metode string title() Python mengembalikan salinan string yang diformat dalam kasus judul.

Jadi sekarang Anda dapat menggunakan dua metode ini untuk menyelesaikan masalah.

Tentukan fungsi check_titlecase() yang menerima name sebagai argumen.

  • Anda dapat memanggil metode istitle() pada string input untuk memeriksa apakah itu diformat dalam kasus judul.
  • Jika True , Anda dapat mencetak bahwa string sudah dalam huruf besar/kecil.
  • Jika tidak, Anda dapat memanggil metode title() dan mengembalikan salinan string dalam case judul.

Sel kode berikut menunjukkan definisi fungsi check_titlecase() .

 def check_titlecase(name): if name.istitle(): print(f"'{name}' is already formatted in title case.") else: return name.title()

Sekarang mari kita panggil metode check_titlecase() dengan argumen.

 check_titlecase("jane smith") # Output Jane Smith

Pada output di atas, Anda dapat melihat bahwa string "Jane Smith" sekarang berada dalam huruf besar/kecil.

️ Mari kita ambil contoh lain.

 check_titlecase("agatha Christie") # Output Agatha Christie

Kali ini, mari kita panggil fungsi dengan string berselubung judul.

 check_titlecase("Grace Hopper") # Output 'Grace Hopper' is already formatted in title case.

Kami mendapat pemberitahuan bahwa string diformat dalam kasus judul, dan fungsinya berfungsi seperti yang diharapkan.

Kesimpulan

Sekarang mari kita rangkum masalah yang telah kita bahas sejauh ini.

  • Untuk memeriksa apakah sebuah string adalah palindrom, periksa apakah string dan versi terbaliknya sama. Anda dapat menggunakan metode pengirisan string atau built-in untuk membalikkan string.
  • Untuk memeriksa apakah dua string adalah anagram, periksa apakah salinan yang diurutkan sama. Dan untuk mengurutkan string, gunakan fungsi sort () bawaan.
  • Untuk memverifikasi apakah sebuah nama berada dalam huruf besar/kecil judul, gunakan metode .istitle() untuk memeriksa dan metode .title( ) untuk mendapatkan salinan huruf besar-judul dari string.

Saya harap Anda menikmati tutorial ini tentang string Python. Sebagai langkah selanjutnya, pelajari cara menggunakan pemahaman daftar di Python atau pelajari tentang operator not equal di Python.

Selamat belajar dan coding!