2016-11-25 3 views
0

Попытка решить проблему, в которой я могу изменить каждое слово в строке, Так как в питоне нет «\ 0», в отличие от C, моя логика не может подобрать последний символ Струна. Любая идея, как это может быть исправлено с не слишком много изменений в кодПоследний символ строки не подбирается

Input = This is an example 
Output = sihT si na elpmaxe 

import os 
import string 

a = "This is an example" 
temp=[] 
store=[] 
print(a) 
x=0 
while (x <= len(a)-1): 

    if ((a[x] != " ") and (x != len(a)-1)): 
     temp.append(a[x]) 
     x += 1 

    else: 
      temp.reverse() 
      store.extend(temp) 
      store.append(' ') 
      del temp[:] 
      x += 1 

str1 = ''.join(store) 
print (str1) 

Мой вывод усечение последний символ

sihT si na lpmaxe 
+3

У вас есть условие, которое специфически исключающий последний символ. – pvg

+4

Вы писали c слишком долго. 'print '' .join (слово [:: - 1] для слова в a.split())' – Holloway

+0

@pvg, если я это сделаю: if ((a [x]! = "") и (x! = len (а))) мой результат полностью усекает последнее слово. вывод: sihT si na – Fenomatik

ответ

0

Вы должны удалить -1 в обоих len(a)-1 и изменить порядок в and (не так, когда x == len(a) это будет не пытаться получить a[x], которые могли бы дать "index out of range")

while (x <= len(a)): 

    if (x != len(a)) and (a[x] != " "): 

Полная версия, которая работает для меня

import os 
import string 

a = "This is an example" 
temp = [] 
store = [] 
print(a) 

x = 0 

while (x <= len(a)): 

    if (x != len(a)) and (a[x] != " "): 
     temp.append(a[x]) 
     x += 1 
    else: 
     temp.reverse() 
     store.extend(temp) 
     store.append(' ') 
     del temp[:] 
     x += 1 

str1 = ''.join(store) 
print(str1) 
+0

все еще получает нарушение памяти «IndexError: string index out the range» – Fenomatik

+0

@Fenomatik изменил ли вы заказ 'и'? – furas

+0

Я только что сделал, поэтому я предполагаю, что есть заказ на условие, слева направо? – Fenomatik

2

Как pvg предложил, вы за исключением последнего символа себя. Вам не нужно проверять на x != len(a)-1, так что вы можете добавить последний символ в строку temp. Последнее слово, которое можно добавить после выхода из цикла, будет содержаться в переменной temp. Этот намек только для того, чтобы заставить ваш код работать, иначе вы могли бы сделать это намного короче в python, как это было предложено людьми.

0

Это не очень просто и не нужен дополнительный цикл:

a = "This is an example" 
print(a) 
str1 = " ".join([word[::-1] for word in a.split(" ")]) 
print(str1) 

вход и выход:

This is an example 
sihT si na elpmaxe 
+0

Gotta credit @Holloway. Он прокомментировал этот ответ. – pylang

+0

Люди так быстро, пусть это будет там, как украшение –

+0

ок. но все же кредит @ Холлоуэй, так как он ответил первым. – pylang

Смежные вопросы