Python 为什么我不能硬编码for语句范围内的值?
我不理解以下代码在函数中是如何工作的:Python 为什么我不能硬编码for语句范围内的值?,python,Python,我不理解以下代码在函数中是如何工作的: for i in range(len(s)-len(sub)+1): if sub == s[i:i+len(sub)]: 为什么我不能通过范围(4)让它工作 编写一个函数,该函数接受两个名为“sub”和“s”的字符串参数,并返回sub作为s的连续子字符串出现的次数 s= "nickdick" sub= "ick" def function(sub,s): count = 0 for i in range(len(s)-len
for i in range(len(s)-len(sub)+1):
if sub == s[i:i+len(sub)]:
为什么我不能通过范围(4)
让它工作
编写一个函数,该函数接受两个名为“sub”和“s”的字符串参数,并返回sub作为s的连续子字符串出现的次数
s= "nickdick"
sub= "ick"
def function(sub,s):
count = 0
for i in range(len(s)-len(sub)+1):
if sub == s[i:i+len(sub)]:
count +=1
print(count)
return count
您可以使用4,如果这些字符串的
len(s)-len(sub)+1恰好是4,那么它将是有效的代码。但是,使用len
编写代码的目的是,如果您决定更改s
或sub
,代码仍然有效,您不必通过手动更改“魔法常数”4 您可以使用4,如果这些字符串的len(s)-len(sub)+1恰好是4,那么它将是有效的代码。但是,使用len
编写代码的目的是,如果您决定更改s
或sub
,代码仍然有效,您不必通过手动更改“魔法常数”4 您可以使用4,如果这些字符串的len(s)-len(sub)+1恰好是4,那么它将是有效的代码。但是,使用len
编写代码的目的是,如果您决定更改s
或sub
,代码仍然有效,您不必通过手动更改“魔法常数”4 您可以使用4,如果这些字符串的len(s)-len(sub)+1恰好是4,那么它将是有效的代码。但是,使用len
编写代码的目的是,如果您决定更改s
或sub
,代码仍然有效,您不必通过手动更改“魔法常数”4 为什么要硬编码传递给函数的字符串长度?您希望它使用实际字符串的长度!顺便说一句,s.count(sub)
完成了这项工作-如果你想变得聪明,你可以把它作为你家庭作业的替代解决方案:def函数(sub,s):返回s.count(sub)
好吧,在你的例子中4不是正确的值:s
的长度是8,sub
的长度是3,所以len(s)-len(sub)+1是6。如果您使用range(6)
它可以用于这两个字符串,但对于不同长度的字符串则无法正常工作。假设您在其中放入一个硬编码数字(如4),然后使用字符串“asdfasdfasdfasdf”和“asdfa”调用函数。然后会发生什么?为什么要硬编码传递给函数的字符串长度?您希望它使用实际字符串的长度!顺便说一句,s.count(sub)
完成了这项工作-如果你想变得聪明,你可以把它作为你家庭作业的替代解决方案:def函数(sub,s):返回s.count(sub)
好吧,在你的例子中4不是正确的值:s
的长度是8,sub
的长度是3,所以len(s)-len(sub)+1是6。如果您使用range(6)
它可以用于这两个字符串,但对于不同长度的字符串则无法正常工作。假设您在其中放入一个硬编码数字(如4),然后使用字符串“asdfasdfasdfasdf”和“asdfa”调用函数。然后会发生什么?为什么要硬编码传递给函数的字符串长度?您希望它使用实际字符串的长度!顺便说一句,s.count(sub)
完成了这项工作-如果你想变得聪明,你可以把它作为你家庭作业的替代解决方案:def函数(sub,s):返回s.count(sub)
好吧,在你的例子中4不是正确的值:s
的长度是8,sub
的长度是3,所以len(s)-len(sub)+1是6。如果您使用range(6)
它可以用于这两个字符串,但对于不同长度的字符串则无法正常工作。假设您在其中放入一个硬编码数字(如4),然后使用字符串“asdfasdfasdfasdf”和“asdfa”调用函数。然后会发生什么?为什么要硬编码传递给函数的字符串长度?您希望它使用实际字符串的长度!顺便说一句,s.count(sub)
完成了这项工作-如果你想变得聪明,你可以把它作为你家庭作业的替代解决方案:def函数(sub,s):返回s.count(sub)
好吧,在你的例子中4不是正确的值:s
的长度是8,sub
的长度是3,所以len(s)-len(sub)+1是6。如果您使用range(6)
它可以用于这两个字符串,但对于不同长度的字符串则无法正常工作。假设您在其中放入一个硬编码数字(如4),然后使用字符串“asdfasdfasdfasdf”和“asdfa”调用函数。那么会发生什么?