我已经为计算机科学的家庭作业制定了一个计划。我发现了一个新的,非常陌生的功能,它似乎无法按预期工作。
我是这个论坛的新手。 附:我也把它作为一种爱好,我不仅仅是为了这些人而已。
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
答案 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):