Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么我的程序不工作(python帮助中的反向函数)?_Python_Function - Fatal编程技术网

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

为什么我的程序不工作(python帮助中的反向函数)?,python,function,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

我做了一个电脑科学作业的程序。我发现了一个新的、非常不熟悉的函数,它似乎无法按预期工作

我是这个论坛的新手。 顺便说一句,我做这件事也是一种爱好,我不只是来参加一个聚会的

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
那么:

reversed_s3 = s3[::-1]
>>> s = 'abc'
>>> s[::-1]
'cba'
作为一项功能:

def reverse(s):
    return s[::-1]
def reverse(my_str):
    s3 = ''
    for char in reversed(my_str):
        s3 = s3 + char
    return s3
关于以下代码的更多想法:

> 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'

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

reverse(s2)
有些事情发生在
reverse
中,但是您传入的字符串没有改变

要修复此问题,首先要从函数中返回

def reverse(s):
    return s[::-1]
def reverse(my_str):
    s3 = ''
    for char in reversed(my_str):
        s3 = s3 + char
    return s3
然后在调用
reverse
时,分配到
s2

s2 = reverse(s2)

有很多其他方法可以改进代码,但这就是“意外”结果的原因。

以及另外两个非常有效的答案,我要补充的是,您实际上没有在反向函数中接受任何参数,因此即使您正确地传递了字符串,也没有对其进行任何处理(正如roippi指出的那样,没有返回任何内容)

需要

def reverse(string):

你有问题吗?也许是比“为什么它不起作用”更具体的问题或者你期望它如何工作以及你观察到的行为的细节…@JoranBeasley他/她定义了
reverse
,正如所写的那样你的反向函数不会做任何事情,缩进不正确,你在声明中没有定义任何参数就向它传递了一个变量。但是这些可能只是转录错误,你能吗提供示例输入和输出?因此,如果
s='abc'
,那么
s.reverse()
会发生什么情况?str对象没有
.reverse()
属性。我们假定,他想向
reverse
传递一个参数(所有这些全局变量都灼伤了我的眼睛)