2013-08-19 18 views
5

Programım rastgele harfleri dışarı atıyor!Kelime tersine çevirme programı harfleri rasgele atlıyor?

def reverse(text): 
    length = len(text) 
    reversed_text = [] 
    for i in range(0,length + 1): 
     reversed_text += [''] 
    original_list = [] 
    for l in text: 
     original_list.append(l) 
     new_place = length - (original_list.index(l)) 
     reversed_text[new_place] = l 
    return "".join(reversed_text) 
+3

Bu, bir dizgeyi tersine çevirmek için çok kıvrık bir yoldur! metin [:: - 1] 'hile yapardı. – Ben

+1

Çok rastgele değil. Tekrarlanan harflerin üzerindedir ... İndeks kullanıyorsunuz ... – MakeCents

+1

Bunu neden çalıştırıyorum, "yrtsloc", "yrotsloc" değil. Açıklamanız yanlış mı, yoksa bu gerçek kodunuz değil mi? – abarnert

cevap

2

Bu yinelenen harfler çünkü var ne olur

def reverse(text): 
    return text[::-1] 
7

deneyin: Örneğin, 'coolstory' 'yrotsloc' ve 'müthiş' olur İşte

kodudur 'mosewa' olur

original_list.index(l) 

hep aynı l için aynı değeri döndürecektir. Yani new_place, farklı yerlerde aynı harflerin ikisi için aynı olacaktır. Ayrıca reversed() kullanabilirsiniz

>>> s = "hello" 
>>> s[::-1] 
'olleh' 

, ama bu reversed object (bir dize) döndürür: Python dizeleri tersine çevirmek için

genel bir yol dilimleme beraberdir. Ters sırayla bir dize üzerinde yineleme yapmak istiyorsanız, bu daha iyi bir seçenektir:

>>> for c in reversed(s): 
...  print c 
... 
o 
l 
l 
e 
h 
+0

Bu kesinlikle _should_ hatası gibi görünüyor ama soruda verilen örnekleri nasıl açıkladığını göremiyorum? –

+0

@JackAidley, 'reversed_text [new_place] = l, aynı char – leon

+0

ile var olan bir konumu ayarlar. Evet," yolsuzluktan "yrotsloc nasıl üretilir? –

İlgili konular