如何在python中使输入文本反之?

时间:2015-01-16 08:20:47

标签: python

我尝试编写程序,从输入中构建新单词,其中字母反之亦然

#    vise    versa    
print    ("word vise versa")
word = input("Input your text ")
new_word = ""
while word:
    position = len(word) - 1
    for letter in word:
    new_word += letter[position]
    position -= 1
print(new_word)        

总是有错误

 Traceback (most recent call last):
 File "4_2.py", line 9, in <module>
      new_word += letter[position]
 IndexError: string index out of range
我做错了什么? 谢谢!

4 个答案:

答案 0 :(得分:1)

麻烦可能就是你在下面的行中所做的

for letter in word:
    new_word += letter[position]

其中字母是单词中的每个字母,首先是&#39; a&#39;然后&#39; b&#39;然后&#39; c&#39;如果单词是abc。在秒数字符串上,您尝试使用字母&#39; a&#39;作为一个数组,这是不好的。您可能想要替换为单词数组?

答案 1 :(得分:0)

首先在你的代码中,如果你的输入不是None或False Value,你的循环将永远存在,因为word不是一个假值。

其次,您可以使用字符串的反向切片或类似的列表:

#    vise    versa    
print("word vise versa")
word = raw_input("Input your text ")
new_word = ""
if word:
  new_word = word[::-1]
print(new_word)

答案 2 :(得分:0)

  1. 使用raw_input方法
  2. 从用户获取输入词
  3. len方法获取输入字的长度。
  4. 使用while循环在新变量中添加字符。
  5. 1

    递减长度变量
    print "Program: word vise versa"
    word = raw_input("Input your text:")
    new_word = ""
    wdlen = len(word)
    while wdlen:
        new_word += word[wdlen-1]
        wdlen -= 1
    
    print new_word
    
  6. 输出:

    $ python test.py 
    Program: word vise versa
    Input your text:abcdef
    fedcba
    

    使用slice

    更多信息https://docs.python.org/2/whatsnew/2.3.html#extended-slices

    >>> a = "12345"
    >>> a[::-1]
    '54321'
    

答案 3 :(得分:0)

您可以将代码重写为像这样的oneliner:

new_word = "".join(reversed(input("Input your text ")))

reversed函数采用序列类型,并以相反的顺序返回一个新元素。但是,现在这将是一个列表。 然后"".join将它们连接回一个字符串 - 必须提供一些连接字符串,因此使用任何空字符串。

使用较少的行,没有临时变量,此代码中断的位置较少。