2015-10-18 4 views
-1

Я начинающий в python.I создал код, чтобы ввести введенную строку в palindrome (или сказать, что я хочу). Но главная проблема заключается в том, что я не знаю, как создать пустой массив типа char (т.е. string). Когда я компилирую свой код, я получаю синтаксическую ошибку: File "convert to pallindrome.py", line 14, in <module> s1[j]=s2[y-i]. Я не знаю, является ли проблема пустого массива, который я создал. Пожалуйста, помогите мне в этом.Невозможно создать пустой массив в Python

s2=raw_input('Enter the s2: ') #read the string from user 
x=len(s2) 
y=x-1 
s1=[20]   #another array to hold the new string 
j=0 
if len(s2)%2==0:      #if length of string is even 
    for i in range(0,y/2-1):  #do until i<=half of string length 
      if s2[i]==s2[y-i]: 
        s1[j]=s2[i] 
        j=j+1   #if characters are equal then copy the character to array 
      elif s2[i]!=s2[y-i]: 
        s1[j]=s2[i] 
        j=j+1 
        s1[j]=s2[y-i] 
        j=j+1   #if characetrs are not equal then copy both the letters 
    elif len(s2)%2!=0:      #if length of string is odd 
    for i in range(0,y/2-1): 
      if s2[i]==s2[y-i]: 
        s1[j]=s2[i] 
        j=j+1 
      elif s2[i]!=s2[y-i]: 
        s1[j]=s2[i] 
        j=j+1 
        s1[j]=s2[y-i] 
        j=j+1   #do same as above 
z=2*len(s1)    #get 2xlength of string 
if z%2==0: 
    for i in range(0,z-1): 
      if i<=z/2: 
        s1[z-i]=s1[i] #copy first half to the second half of string to create the pallindrome. 
    if z%2!=0: 
    for i in range(0,z-1): 
      if i<=(z/2)-1: 
        s1[z-i]=s1[i]    
    print s1    #print pallindrome 

Я сделал это с логикой программирования C, так как я пришел из C language.Logic, кажется, right.but синтаксис не работает.

+0

Вы не создаете пустой массив строк в Python. Ознакомьтесь с [официальным учебником Python] (https://docs.python.org/3.4/tutorial/index.html), и вы сэкономите много набрав. – TigerhawkT3

+0

Я не понимаю цели программы. Вы просто хотите превратить строку как «привет» в «helloolleh»? Или что-то другое? – TigerhawkT3

+0

@ TigerhawkT3 yep Я намерен превратить строку 'hello' в' helloolleh'. – Midhun

ответ

1

Основываясь на своем недавнем комментарии на другой ответ, я бы рекомендовал создать list и итерацию через него:

>>> s = 'abcdcaa' 
>>> l = list(s) 
>>> for idx,val in enumerate(l): 
...  if val != l[-idx - 1]: 
...   l[-idx - 1] = val 
... 
>>> result = ''.join(l) 
>>> print(result) 
abcdcba 

Переводя алгоритм C построчно в код Python рецепт для путаницы , Создайте свой алгоритм с учетом целевого языка.

+0

Зачем создавать список? Вы можете просто перебирать строку, так как это также последовательность. –

+0

@BurhanKhalid - Потому что я хотел его мутировать. – TigerhawkT3

+0

@ TigerhawkT3 спасибо. Это новое. Спасибо за такой сложный ответ. – Midhun

-1

В Python вы не должны кодировать код, но для ответа на ваш вопрос вот как вы можете иметь пустой массив, длина которого вы можете манипулировать.

# Make 20 length array of chars 
import array 
s = array.array('c', " "*20) 

# Set some chars 
s[10] = "A" 

# Show it 
print "".join(s) 
Смежные вопросы