为什么我的程序不工作(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
传递一个参数(所有这些全局变量都灼伤了我的眼睛)