Python listelerini kullanarak dize nasıl tersine çevrilir

0

Soru

Bu kod parçasını python'daki dizeleri tersine çevirmekle ilgili ilgili bir sorudan buldum, ancak birisi bunu düz ingilizce olarak yorumlayabilir mi? Lütfen python'da hala yeni olduğumu ve yalnızca while döngülerini ve işlevlerini dün nasıl kullanacağımı öğrendiğimi unutmayın: / bu yüzden bunu gerçekten kelimelere dökemiyorum çünkü anlayışım henüz tam olarak orada değil.

burada zaten kodudur :

def reverse_string(string):
    new_strings = [] 
    index = len(string) 
    while index:  
        index -= 1                       
        new_strings.append(string[index]) 
    return ''.join(new_strings) 

print(reverse_string('hello'))
list python string
2021-11-24 04:07:22
3

En iyi cevabı

4

Elbette, ne yaptığını bilerek, kodu anlayabilirsiniz. İçinde while döngü index değer dizenin sonundan başlar ve 0'a kadar sayar. Her adımda, bu karakteri (yine sondan başlayarak) oluşturduğu listenin sonuna ekler. Son olarak, listeyi bir dizeye birleştirir.

Yani, 'abcd' verildiğinde, liste oluşturulur:

'abcd'  #3 -> ['d']
'abcd'  #2 -> ['d','c']
'abcd'  #1 -> ['d','c','b']
'abcd'  #0 -> ['d','c','b','a']
2021-11-24 04:10:52
1

Temelde iyi ile dize uzunluğunu almak len yöntem. Bu, size bu dizenin ne kadar uzun olduğunu temsil eden bir tamsayı değeri döndürür.

Daha sonra bu dizenin uzunluğunu kullanırlar ve bir dizede sıfıra kadar etkili bir şekilde yinelenirler. while döngü. Kullanarak -= operatör.

Her yineleme (döngü etrafında her zaman anlamına gelir) sıfıra ulaşana kadar uzunluğundan uzaklaşacaktır.

Yani kullanalım hello örnek bir girdi olarak ve bunu birlikte gözden geçirin.

reverse_string('hello') bu yöntemi nasıl çağırırız, şu şekilde yapılır: print kodunuzun beyanı.

Daha sonra bu işlevi giriyoruz ve aşağıdaki adımları uyguluyoruz:

  1. Adlı yeni bir boş dizi oluşturuyoruz new_strings.
  2. İlk dizenin uzunluğunu buluyoruz hello bu da bize 5 dolar veriyor. Yani şimdi index 5'e eşittir.
  3. Devam edene kadar devam eden bir while döngüsü oluşturuyoruz index artık kullanmak yok while(index): - böyle bir süre döngüsü bir 0 değer olarak falsy ve buna ulaştıktan sonra sona erecek. Bu nedenle ne zaman index oluyor 0 döngü duracak.
  4. Bu döngünün ilk satırı gerçekleştirir index -= 1 ve bu yazmakla aynı şey index = index - 1 böylece ilk döngü içinden geçiyoruz index = 5 - 1 ve sonra şimdi index eşittir 4.
  5. Çünkü Python daha sonra erişmemize izin veriyor character kullanarak bir dize string[index] (ve bu 0 -> n'den çalıştığı için) hello[4] aslında bize karakteri verecek o.
  6. Bu karakteri diziye de ekliyoruz new_strings tekrarlamalar yoluyla sıfır ulaşmaya devam ederken geriye bu dizi bize veren her karakter katacak yani ['o', 'l', 'l', 'e', 'h']
  7. Dizin şimdi sıfır olduğu için döngüden ayrılıyoruz ve bir join yine bir dize oluşturmak için dizi üzerinde işlem. Komut ''.join(new_strings) daha önce sahip olduğumuz diziye ayırıcı olmadan katılmak istediğimiz anlamına gelir. Eğer yapsaydık '#'.join(new_strings) bunun yerine biz alırdık o#l#l#e#h yerine olleh.

Umarım bu cevap size biraz açıklık getirir.

2021-11-24 04:20:49

bu, sormak üzere olduğum son satırla ilgili sorularımı açıklığa kavuşturuyor. Açıklama için teşekkürler :)
user17415509

Endişe hiç de hepsi. Yardım edebildiğime sevindim. Yine de Tim Roberts haklı; Bunların çoğu temellerden geçerek anlaşılabilir. Anlamadığınız bir koda rastladığınızda, yöntem / operatör için dil belgelerini aramayı denemenizi öneririm. Başlangıçta anlamasanız bile, bunu alışkanlık haline getirmek ve anlamaya çalışmak, ilerlemenize çok iyi hizmet edecektir.
Johan Jarvi

Örnek olarak str.Python'un yerleşik tür belgelerinin bir parçası olan join () belgeleri daha sonra çok yararlı olabilir, ancak bu noktada nasıl ezici ve kafa karıştırıcı görüneceğini anlayabiliyorum, ancak bu kaynakları bulma alışkanlığına girmek ve bunları nasıl yorumlayacağımı öğrenmek çok iyi.
Johan Jarvi
0

Tabii ki, Bu çok basit bir programdır. Net bir fikir edinmek için python'da string yöntemlerini ve string indekslemeyi yeniden belirtmelisiniz. Bunu ölümle açıklayayım.

print (reverse_string ('merhaba'))//Yazdırma işlevi başka bir işlevi çağırıyor reverse_string ve"merhaba" argümanı iletiliyor.

def reverse_strıng (string): / / Değişkende "merhaba" argümanı saklanır reverse_strıng işlevinde dize.

**new_strings = []** // created a new empty list
**index = len(string)** // len function returns the length of the argument 
                           passed to the function. len("hello")=5 and assigned 
                           to index. index=5.

while index: / / while döngüsü, koşul yanlış olana kadar exicute. ındex =olduğunda örnek 0.in dizin oluşturma dizesini 0'dan başlatın .İçin örnek. dize [0] = h, dize[1] = e, dize[2] = l, dize[3] = l, dize[4] = o.

    **index -= 1**  //Note the last letter 'o' is in string[4] and the len 
                      function returned 5 so we need to decrement index variable 
                      to 4 so that it will pointing to string[4]=o                     
  

new_strings.ekle (string[index]) // dize ekle[4] yani o vb ... dönüş ''.katıl (new_strings)

2021-11-24 05:28:44

Diğer dillerde

Bu sayfa diğer dillerde

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................