Spróbuj tak:
reverse(hello)
W rzeczywistości z
print reverse(hello)
drukowania wartości zwracanej odwrocie. A tą wartością zwracaną jest None.
Podam kilka ogólnych radzi:
odwróconych() w kodzie jest funkcją ze skutkami ubocznymi (druk). Należy unikać funkcje z efektów ubocznych, gdy nie trzeba, należy rozważyć odwróconych() powraca słowo zamiast drukować go:
def reverse(letters):
backwards = ""
i = len(letters) - 1
while i >= 0:
backwards = backwards + letters[i]
i = i - 1
return backwards
print (reverse("hello"))
Ponadto
i = len(letters) - 1
while i >= 0:
backwards = backwards + letters[i]
i = i - 1
nie jest łatwe, a jeśli mantain dodajesz funkcjonalność pętli, której dekrement i = 1 będzie daleki od miejsca, w którym powinien być "koncepcyjnie".Należy wolisz mający ubytek wraz z czekiem:
for i in xrange(len(letters)-1,-1,-1):
backwards = backwards + letters[i]
Kiedy jestem leniwy Piszę
myString = myString + fewChars
więc mogę zrozumieć, że jesteś leniwy. Ale dodanie fewChars nie modyfikuje myString, ale tworzy nowy. Jeśli iteracyjnie dodajesz wiele znaków, rzadko najskuteczniejszym sposobem jest dodawanie jeden po drugim. Rozważ użycie join(). Na przykład
letters = 'word'
lettersList = [letters[i] for i in xrange(len(letters)-1,-1,-1)]
myReversed ''.join(lettersList)
ok zgadzam nie jest czytelny i prawdopodobnie nawet szybciej, ale dla większych ciągów skaluje lepiej niż newString = oldString + oneChar podejścia.
To powiedziawszy, bardziej pythonic zbliża
letters[::-1]
już sugerowane przez kogoś szybciej niż ja zazwyczaj działa znacznie lepiej i są łatwe do odczytania przez programistów Pythona.
możliwy duplikat funkcji [Zwróć pozycje z listy w funkcji. Python] (http://stackoverflow.com/questions/18990977/return-items-from-list-in-function-python) – Freddie