向后写字

时间:2014-07-11 18:14:21

标签: python indexing reverse

我知道有可能:

  

sampleword [:: - 1]

reverse(string) 

但我想自己写。我不明白为什么我的代码不起作用。你能帮帮我吗?

h=input('word\n\n');
rev(h)
def rev(h):
    counter=len(h);
    reverse="";
    while counter>0:
        reverse+=h[counter];
        counter=counter-1;
    return reverse
    #print (reverse); ?
input();

3 个答案:

答案 0 :(得分:4)

您的代码存在一些问题,我在此调整后的脚本的评论中指出了它们:

def rev(h):
    counter=len(h) - 1 # indexes of h go from 0 to len(h) - 1
    reverse=""
    while counter>=0: # changed to >=0
        reverse+=h[counter]
        counter -= 1
    return reverse

h=input('word\n\n');
revers = rev(h) # put rev(h) after the definition of rev!
print(revers) # actually print the result
# deleted your last line

此外,您不需要在python中使用;终止行,您可以将counter=counter-1写为counter -= 1

答案 1 :(得分:2)

您的代码中存在一些问题。

  1. 在定义之前调用rev()
  2. 索引从0开始,因此您需要>= 0而不是> 0
  3. 您希望counter等于len(h) - 1,因为索引始于0
  4. 您的行末不需要分号
  5. 使用递归这是一种更简单,更快捷的方法:

    def reverse(text):
        if len(text) <= 1:
            return text
        return reverse(text[1:]) + text[0]
    

答案 2 :(得分:0)

当你更多地使用Python时,你会遇到“Pythonic”代码的概念......代码使用Python功能并且显示出良好的编程风格。

因此,您有一个很好的答案,上面显示了如何纠正您的代码以便在Python中正常工作。但我想指出的问题是C风格的编程。有人说你可以用任何语言编写C语言(特别是在C ++和C#中都是如此),但如果你这样做,你可能不会很好地使用该语言的功能。在Python中,编写这种函数风格并忽略可用的内置函数,用C语言实现,闪电般快速的方法不是Pythonic。

我向你保证reverse(string)或string [:: - 1]都比你的rev()python代码快。 Python具有大量内置功能和丰富的文件库,您可以导入这些文件以获得额外的已调试功能。看看你是否能找到一种方法来执行reverse(string)和rev()函数的时间。在Python中有一种很好的方法。