为什么我的程序不起作用(python帮助中的反向函数)?

时间:2014-01-31 16:56:15

标签: python function

我已经为计算机科学的家庭作业制定了一个计划。我发现了一个新的,非常陌生的功能,它似乎无法按预期工作。

我是这个论坛的新手。 附:我也把它作为一种爱好,我不仅仅是为了这些人而已。

def reverse():
    s3 = ''
    for char in reversed(s3):
        s3 = s3 + char

def match_char():
    global s1
    global s2
    global s3
    s1 = input('What is your first string? ')
    s2 = input('What is your next string?  ')

    reverse(s2)

    num_matches = 0
    for i in range(len(s1)):
       if s1[i] == s2[i]:              
            num_matches = num_matches + 1

    return num_matches

3 个答案:

答案 0 :(得分:3)

在python中,字符串是不可变的。所以当你这样做时:

reverse(s2)

有些事情发生在reverse内,但你传入的字符串没有改变。

要解决此问题,首先要从您的函数中return

def reverse(my_str):
    s3 = ''
    for char in reversed(my_str):
        s3 = s3 + char
    return s3

然后在致电s2时分配reverse

s2 = reverse(s2)

还有很多其他方法可以改进您的代码,但这是对“意外”结果的解释。

答案 1 :(得分:1)

怎么样:

reversed_s3 = s3[::-1]
>>> s = 'abc'
>>> s[::-1]
'cba'

作为一项功能:

def reverse(s):
    return s[::-1]

关于以下代码的更多想法:

> def reverse():
>     s3 = ''
>     for char in reversed(s3):
>         s3 = s3 + char

它调用reversed(),这是一个生成器。所以,试试这个:

>>> s = 'abc'
>>> s = list(reversed(s))
>>> s
['c', 'b', 'a']
>>> s = ''.join(s)
>>> s
'cba'

答案 2 :(得分:0)

除了另外两个非常有效的答案,我还要补充一点,你实际上并没有在你的反向函数中使用任何参数,所以即使你正确地传递了一个字符串,也没有对它进行任何处理(并且没有返回任何内容)正如罗比指出的那样。)

def reverse():

需要

def reverse(string):