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

2024-06-02 04:46:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我做了一个计算机科学作业的程序。我发现了一个新的,非常陌生的功能,它似乎不会像预期的那样工作。你知道吗

我是新来这个论坛的。 顺便说一句,我也把它作为一种爱好,我来这里不仅仅是为了一个朋友

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

Tags: inforinputyours3isdefglobal
3条回答

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

reverse(s2)

有些事情发生在reverse的内部,但是您传入的字符串是不变的。你知道吗

要修复此问题,首先需要从函数中return

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

然后在调用reverse时在s2上赋值:

s2 = reverse(s2)

有很多其他的方法来改进你的代码,但这就是你的“意外”结果的解释。你知道吗

怎么样:

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'

除了另外两个非常有效的答案之外,我还要补充的是,您实际上并没有在reverse函数中接受任何参数,因此即使您正确地传递了一个字符串,也没有对它进行任何处理(并且没有返回roippi指出的任何内容)。你知道吗

def reverse():

必须是

def reverse(string):

相关问题 更多 >