Python <;功能>;(str1,str2)分别调用它们
首先,这是家庭作业,所以我不希望有任何直接的答案。我需要取一个函数定义的两个字符串(Python <;功能>;(str1,str2)分别调用它们,python,string,recursion,Python,String,Recursion,首先,这是家庭作业,所以我不希望有任何直接的答案。我需要取一个函数定义的两个字符串(semordnilap(str1,str2)),我需要查看当其中一个被反转时它们是否相等。我想知道我是否可以使用semordnilap(str1[0:1)==semordnilap(str2[-1])在函数外单独调用这些函数。我尝试了几种方法,但我一定没有正确地思考它,当然,尝试递归地调用这些函数也有一定的难度。任何建议或指导都会有所帮助 def semordnilap(str1, str2): '''
semordnilap(str1,str2)
),我需要查看当其中一个被反转时它们是否相等。我想知道我是否可以使用semordnilap(str1[0:1)==semordnilap(str2[-1])在函数外单独调用这些函数。
我尝试了几种方法,但我一定没有正确地思考它,当然,尝试递归地调用这些函数也有一定的难度。任何建议或指导都会有所帮助
def semordnilap(str1, str2):
'''
str1: a string
str2: a string
returns: True if str1 and str2 are semordnilap
False otherwise.
'''
if len(str1) != len(str2):
return False
if len(str1) <= 1 or len(str2) <= 1:
return False
if semordnilap(str1[0]) != semordnilap(str2[-1]):
return False
else:
return True
def semordnilap(str1、str2):
'''
str1:字符串
str2:字符串
返回:如果str1和str2是semordnilap,则返回True
否则就错了。
'''
如果len(str1)!=len(str2):
返回错误
如果len(str1)给定两个字符串str1
和str2
,比较一个字符串是否等于另一个字符串的最简单方法是使用切片:
str1 = 'racecar'
str2 = 'racecar'
str1 == str2[::-1]
Out[57]: True
这实际上只是检查str1是否是回文(即,它本身的反面)
如果您真的想使用递归,那么您也需要使用切片:检查是否str1[0]
==str2[-1]
,然后递归地调用str1[1://code>和str2[:-1]
上的函数
[::-1]
语法是语法,它对字符串、列表和其他序列有效。给定两个字符串str1
和str2
,比较一个字符串是否等于另一个字符串的倒数的最简单方法是使用切片:
str1 = 'racecar'
str2 = 'racecar'
str1 == str2[::-1]
Out[57]: True
这实际上只是检查str1是否是回文(即,它本身的反面)
如果您真的想使用递归,那么您也需要使用切片:检查是否str1[0]
==str2[-1]
,然后递归地调用str1[1://code>和str2[:-1]
上的函数
[::-1]
语法是语法,对字符串、列表和其他序列有效。要反转字符串,请使用“这是字符串”[::-1]
[::-1]
是一种切片表示法,表示从字符串的开头到结尾包含所有内容,但按相反的顺序执行。
'abcdefghijk'[6:1:-2]
输出'gec'
,因为它从第6个索引(从0开始)一直到第一个索引,但不包括第一个索引,步骤与2相反
阅读有关切片表示法的更多信息:
递归执行此操作的一种方法:
def semordnilap(str1, str2):
if not (len(str1) or len(str2)): return True
if not (len(str1) and len(str2)): return False
if str1[0] != str2[-1]: return False
return semordnilap(str1[1:], str2[:-1])
第一行检查两个字符串是否为空(0
的计算结果为False
,任何其他数字为True
)。len(str1)
将长度作为整数返回
然后检查是否只有一个字符串为空,在这种情况下,它们不相等
然后检查第一个字母是否与最后一个字母相同
然后,它对每个字符串重复该过程(减去str1的第一个字母,再减去str2的最后一个字母)。直到达到其中一个基本大小写为止。基本大小写就是返回的大小写。因此,只有当每轮的第一个字母等于最后一个字母时,它才会返回True
,直到两个字符串同时用完字符为止。要反转字符串,请使用“这是一个字符串”[::-1]
[::-1]
是一种切片表示法,表示从字符串的开头到结尾包含所有内容,但按相反的顺序执行。
'abcdefghijk'[6:1:-2]
输出'gec'
,因为它从第6个索引(从0开始)一直到第一个索引,但不包括第一个索引,步骤与2相反
阅读有关切片表示法的更多信息:
递归执行此操作的一种方法:
def semordnilap(str1, str2):
if not (len(str1) or len(str2)): return True
if not (len(str1) and len(str2)): return False
if str1[0] != str2[-1]: return False
return semordnilap(str1[1:], str2[:-1])
第一行检查两个字符串是否为空(0
的计算结果为False
,任何其他数字为True
)。len(str1)
将长度作为整数返回
然后检查是否只有一个字符串为空,在这种情况下,它们不相等
然后检查第一个字母是否与最后一个字母相同
然后,它对每个字符串重复该过程(减去str1的第一个字母,再减去str2的最后一个字母)。直到达到一个基本大小写为止。基本大小写就是返回的大小写。因此,只有当每轮的第一个字母等于最后一个字母时,它才会返回True
,直到两个字符串同时用完字符为止。您能显示更多的代码吗?例如,一个简短完整的Python程序怎么样m?要递归地执行此操作(您确实不应该这样做),您可能需要比较两个字符串的结尾(str1[0]==str1[-1]
),然后递归地比较其余字符串(semordnilap(str1[1:],str1[-1])
)@Lasse我添加了到目前为止我所拥有的,但它还远未完成或工作。你能展示更多你拥有的代码吗?例如,一个简短而完整的Python程序如何?要递归地执行此操作(你真的不应该这么做),你可能需要比较两个字符串的结尾(str1[0]==str1[-1]
)然后反复比较其余的(semordnilap(str1[1:],str1[:-1])
)@Lasse我添加了迄今为止我所拥有的,但它还远没有完成或工作。冒着听起来像一个真正的业余爱好者的风险……你能告诉我切片发生在哪里吗?例如:“[:]是进行切片的原因,而-1是重复”感谢you@Aoxx[::-1]在这篇文章中有解释:@Aoxx你可能应该阅读python教程中关于字符串的部分。@kren470谢谢你,这帮了大忙。@Bakuriu我将不得不留出一些时间来阅读这篇文章(我很容易分心),冒着听起来像一个真正的业余爱好者的风险……你能告诉我“在哪里”吗切片正在发生?exp:“[::]是进行切片的,而-1是重现”…谢谢you@Aoxx[::-1]在本文中进行了解释:@Aoxx您可能应该阅读python教程中关于字符串的部分@