我知道有可能:
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();
答案 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)
您的代码中存在一些问题。
rev()
0
开始,因此您需要>= 0
而不是> 0
counter
等于len(h) - 1
,因为索引始于0
使用递归这是一种更简单,更快捷的方法:
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中有一种很好的方法。