Cara membalik string dengan python tanpa menggunakan fungsi reverse

Python String adalah kumpulan dari karakter Unicode. Python memiliki banyak fungsi untuk manipulasi string, tetapi pustaka string Python tidak mendukung fungsi "terbalik ()" bawaan. Tetapi ada berbagai cara untuk membalikkan string. Kami mendefinisikan metode berikut untuk membalikkan String Python

  • Menggunakan untuk loop
  • Menggunakan pengulangan while
  • Menggunakan operator irisan
  • Menggunakan fungsi terbalik()
  • Menggunakan rekursi

Menggunakan untuk loop

Di sini, kita akan membalikkan string yang diberikan menggunakan for loop

Keluaran

('The original string is: ', 'JavaTpoint')
('The reverse string is', 'tniopTavaJ')

Penjelasan-

Pada kode di atas, kita telah mendeklarasikan fungsi reverse_string() dan melewatkan argumen str. Di badan fungsi, kami telah mendeklarasikan variabel string kosong str1 yang akan menampung string terbalik

Selanjutnya, perulangan for mengulangi setiap elemen dari string yang diberikan, menggabungkan setiap karakter di awal dan menyimpannya dalam variabel str1

Setelah iterasi lengkap, ia mengembalikan string urutan terbalik str1 ke fungsi pemanggil. Itu mencetak hasilnya ke layar

Menggunakan pengulangan while

Kita juga dapat membalikkan string menggunakan perulangan while. Mari kita pahami contoh berikut

Contoh -

Keluaran

('The original string  is : ', 'JavaTpoint')
('The reversed string using a while loop is : ', 'tniopTavaJ')
_

Penjelasan

Pada kode di atas, kita telah mendeklarasikan sebuah variabel str yang menyimpan nilai string. Kami menginisialisasi while loop dengan nilai string

Di setiap iterasi, nilai str[count - 1] digabungkan ke reverse_String dan mengurangi nilai count. Beberapa saat menyelesaikan iterasinya dan mengembalikan string urutan terbalik

Menggunakan operator irisan ([]).

Kami juga dapat membalikkan string yang diberikan menggunakan operator slice yang diperluas. Mari kita pahami contoh berikut

Contoh -

Keluaran

('The original string  is : ', 'JavaTpoint')
('The reversed string(using extended slice syntax) is : ', 'tniopTavaJ')

Penjelasan

Umumnya, operator irisan menerima tiga parameter - mulai, berhenti, dan melangkah. Kami memberikan nilai no untuk indeks awal dan akhir, yang menunjukkan indeks awal adalah 0 dan akhir adalah n-1 secara default. Ukuran langkah adalah -1;

Menggunakan fungsi terbalik dengan bergabung

Python menyediakan fungsi reversed() untuk membalikkan string. Mari kita pahami contoh berikut

Contoh -

Keluaran

('The original string is : ', 'JavaTpoint')
('The reversed string using reversed() is : ', 'tniopTavaJ')

Penjelasan

Di badan fungsi, kami mendeklarasikan string kosong yang dipisahkan oleh. operator titik. String terbalik() mengembalikan string terbalik yang digabungkan dengan string kosong yang dipisahkan menggunakan fungsi join()

Menggunakan rekursi()

String juga dapat dibalik menggunakan rekursi. Rekursi adalah proses dimana fungsi memanggil dirinya sendiri. Perhatikan contoh berikut

Contoh -

Keluaran

('The original string is : ', 'JavaTpoint')
('The reversed string(using reversed) is : ', 'tniopTavaJ')
_

Penjelasan

Pada kode di atas, kita telah mendefinisikan sebuah fungsi yang menerima string sebagai argumen

Di badan fungsi, kami mendefinisikan kondisi dasar rekursi, jika panjang string adalah 0, maka string dikembalikan, dan jika tidak maka kami memanggil fungsi secara rekursif

Operator irisan mengiris string mengharapkan karakter pertama dan digabungkan ke akhir string irisan

Aktivitas terbaru pada pertanyaan ini membuat saya melihat ke belakang dan mengubah solusi saya menjadi one-liner cepat menggunakan generator

rev = ''.join([text[len(text) - count] for count in xrange(1,len(text)+1)])

Meskipun jelas ada beberapa jawaban yang lebih baik di sini seperti langkah negatif dalam fungsi range atau xrange. Berikut ini adalah solusi asli saya


Ini solusi saya, saya akan menjelaskannya langkah demi langkah

def reverse(text):

    lst = []
    count = 1

    for i in range(0,len(text)):

        lst.append(text[len(text)-count])
        count += 1

    lst = ''.join(lst)
    return lst

print reverse('hello')
_

Pertama, kita harus memberikan parameter ke fungsi, dalam hal ini

def reverse(text):

    lst = []
    count = 1

    for i in range(0,len(text)):

        lst.append(text[len(text)-count])
        count += 1

    lst = ''.join(lst)
    return lst

print reverse('hello')
2

Selanjutnya, saya menetapkan daftar kosong, bernama

def reverse(text):

    lst = []
    count = 1

    for i in range(0,len(text)):

        lst.append(text[len(text)-count])
        count += 1

    lst = ''.join(lst)
    return lst

print reverse('hello')
3 untuk digunakan nanti. (Saya sebenarnya tidak tahu saya memerlukan daftar sampai saya mendapatkan
def reverse(text):

    lst = []
    count = 1

    for i in range(0,len(text)):

        lst.append(text[len(text)-count])
        count += 1

    lst = ''.join(lst)
    return lst

print reverse('hello')
4 loop, Anda akan melihat mengapa itu perlu dalam sedetik. )

Variabel

def reverse(text):

    lst = []
    count = 1

    for i in range(0,len(text)):

        lst.append(text[len(text)-count])
        count += 1

    lst = ''.join(lst)
    return lst

print reverse('hello')
5 akan masuk akal setelah saya masuk ke loop
def reverse(text):

    lst = []
    count = 1

    for i in range(0,len(text)):

        lst.append(text[len(text)-count])
        count += 1

    lst = ''.join(lst)
    return lst

print reverse('hello')
4

Jadi mari kita lihat versi dasar dari apa yang ingin kita capai

Masuk akal jika menambahkan karakter terakhir ke daftar akan memulai urutan terbalik. Sebagai contoh

>>lst = []
>>word = 'foo'
>>lst.append(word[2])
>>print lst
['o']

Namun untuk terus membalikkan urutan, kita perlu menambahkan

def reverse(text):

    lst = []
    count = 1

    for i in range(0,len(text)):

        lst.append(text[len(text)-count])
        count += 1

    lst = ''.join(lst)
    return lst

print reverse('hello')
7 lalu
def reverse(text):

    lst = []
    count = 1

    for i in range(0,len(text)):

        lst.append(text[len(text)-count])
        count += 1

    lst = ''.join(lst)
    return lst

print reverse('hello')
8

>>lst.append(word[2])
>>lst.append(word[1])
>>lst.append(word[0])
>>print lst
['o','o','f']

Ini bagus, kami sekarang memiliki daftar yang memiliki kata asli kami dalam urutan terbalik dan dapat diubah kembali menjadi string dengan menggunakan

def reverse(text):

    lst = []
    count = 1

    for i in range(0,len(text)):

        lst.append(text[len(text)-count])
        count += 1

    lst = ''.join(lst)
    return lst

print reverse('hello')
9. Tapi ada masalah. Ini berfungsi untuk kata foo, bahkan berfungsi untuk kata apa pun yang memiliki panjang 3 karakter. Tapi bagaimana dengan kata dengan 5 karakter? . Bagaimana jika ada cara kami dapat mengubah indeks yang kami tambahkan secara dinamis sehingga kata apa pun akan dikembalikan dalam urutan terbalik?

Masukkan untuk loop

for i in range(0,len(text)):

    lst.append(text[len(text)-count])
    count += 1

Pertama-tama, perlu menggunakan

>>lst = []
>>word = 'foo'
>>lst.append(word[2])
>>print lst
['o']
_0 daripada hanya
>>lst = []
>>word = 'foo'
>>lst.append(word[2])
>>print lst
['o']
1, karena kita perlu mengulangi karakter dalam kata, tetapi kita juga perlu menarik nilai indeks kata sehingga kita mengubah urutannya

Bagian pertama dari body loop for kita seharusnya terlihat familier. Ini sangat mirip dengan

>>lst.append(word[..index..])

Padahal, konsep dasarnya sama persis

>>lst.append(text[..index..])

Jadi apa yang dilakukan semua hal di tengah?

Nah, pertama-tama kita perlu menambahkan indeks huruf terakhir ke daftar kita, yang merupakan panjang kata,

def reverse(text):

    lst = []
    count = 1

    for i in range(0,len(text)):

        lst.append(text[len(text)-count])
        count += 1

    lst = ''.join(lst)
    return lst

print reverse('hello')
2, -1. Mulai sekarang kita akan menyebutnya sebagai l(t) -1

>>lst.append(text[len(text)-1])

Itu saja akan selalu mendapatkan huruf terakhir dari kata kita, dan menambahkannya ke

def reverse(text):

    lst = []
    count = 1

    for i in range(0,len(text)):

        lst.append(text[len(text)-count])
        count += 1

    lst = ''.join(lst)
    return lst

print reverse('hello')
3, terlepas dari panjang kata. Tapi sekarang kita memiliki huruf terakhir, yaitu l(t) - 1, kita membutuhkan huruf kedua terakhir, yaitu l(t) - 2, dan seterusnya, sampai tidak ada lagi karakter untuk ditambahkan ke daftar. Ingat variabel
def reverse(text):

    lst = []
    count = 1

    for i in range(0,len(text)):

        lst.append(text[len(text)-count])
        count += 1

    lst = ''.join(lst)
    return lst

print reverse('hello')
_5 kita dari atas? . Dengan menggunakan perulangan
def reverse(text):

    lst = []
    count = 1

    for i in range(0,len(text)):

        lst.append(text[len(text)-count])
        count += 1

    lst = ''.join(lst)
    return lst

print reverse('hello')
_4, kita dapat menambah nilai
def reverse(text):

    lst = []
    count = 1

    for i in range(0,len(text)):

        lst.append(text[len(text)-count])
        count += 1

    lst = ''.join(lst)
    return lst

print reverse('hello')
5 sebanyak 1 melalui setiap iterasi, sehingga nilai yang kita kurangi bertambah, hingga perulangan for telah berulang di seluruh kata

>>for i in range(0,len(text)):
.        
.      lst.append(text[len(text)-count])
.      count += 1

Sekarang setelah kita memiliki inti dari fungsi kita, mari kita lihat apa yang kita miliki sejauh ini

def reverse(text):

    lst = []
    count = 1

    for i in range(0,len(text)):

        lst.append(text[len(text)-count])
        count += 1

Kita hampir selesai. Saat ini, jika kita memanggil fungsi kita dengan kata 'halo', kita akan mendapatkan daftar seperti itu

['o','l','l','e','h']

Kami tidak ingin daftar, kami ingin string. Kita dapat menggunakan

>>lst = []
>>word = 'foo'
>>lst.append(word[2])
>>print lst
['o']
_7 untuk itu

def reverse(text):

    lst = []
    count = 1

    for i in range(0,len(text)):

        lst.append(text[len(text)-count])
        count += 1

    lst = ''.join(lst)
    return lst

print reverse('hello')
_0

Dan itu saja. Jika kita memanggil kata 'hello' secara terbalik(), kita akan mendapatkan ini

def reverse(text):

    lst = []
    count = 1

    for i in range(0,len(text)):

        lst.append(text[len(text)-count])
        count += 1

    lst = ''.join(lst)
    return lst

print reverse('hello')
_1

Jelas, ini jauh lebih banyak kode daripada yang diperlukan dalam situasi kehidupan nyata. Menggunakan fungsi terbalik atau irisan yang diperluas akan menjadi cara optimal untuk menyelesaikan tugas ini, tetapi mungkin ada beberapa contoh ketika itu tidak berfungsi, dan Anda memerlukan ini. Either way, saya pikir saya akan membagikannya untuk siapa saja yang akan tertarik

Bagaimana Anda membalikkan string tanpa fungsi terbalik dengan Python?

String dapat dibalik menggunakan slicing. Untuk membalikkan string, kita cukup membuat irisan yang dimulai dengan panjang string, dan berakhir pada indeks 0 . Pernyataan irisan berarti mulai dari panjang string, berakhir pada posisi 0, bergerak dengan langkah -1 (atau mundur satu langkah).

Bisakah Anda membalikkan string tanpa menggunakan metode terbalik?

Anda dapat membalik suatu String dengan beberapa cara, tanpa menggunakan fungsi reverse() . Menggunakan rekursi - Rekursi adalah proses pengulangan item dengan cara yang mirip dengan diri sendiri. Dalam bahasa pemrograman, jika suatu program memungkinkan Anda untuk memanggil fungsi di dalam fungsi yang sama, maka itu disebut pemanggilan fungsi secara rekursif.

Bagaimana cara membalikkan string tanpa fungsi?

Cara Rekursif untuk membalikkan string .
Hitung panjang (Len) tali
Inisialisasi indeks array. Awal = 0, Akhir = Len-1
tukar nilai pszData[Mulai] dengan pszData[Akhir]
Ubah indeks 'array seperti di bawah ini dan secara rekursif panggil fungsi balik untuk larik lainnya. Mulai = mulai +1;

Apa saja cara berbeda untuk membalikkan string dengan Python?

Beberapa cara umum untuk membalikkan string adalah. .
Menggunakan Mengiris untuk membuat salinan terbalik dari string
Menggunakan for loop dan menambahkan karakter dalam urutan terbalik
Menggunakan while loop untuk mengulangi karakter string dalam urutan terbalik dan menambahkannya
Menggunakan fungsi string join() dengan reversed() iterator