Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/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 为什么我不能硬编码for语句范围内的值?_Python - Fatal编程技术网

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”调用函数。那么会发生什么?