首页 > 解决方案 > 这个问题的python变量的范围

问题描述

我不知道为什么,但是在 countfrequency(s) 函数的最后一行中,我得到的范围值最终为 0,甚至 len(s) 为零。

import collections

def countfrequency(s):
    final = 0
    flag = 1
    d = dict(collections.Counter(s))
    for item in d:
        if d[item] <= k:
            flag = 0
    if flag == 1:                  #Here
        final = max(final, len(s))
    print(final)


s = "ababbc"
k = 2
for x in range(len(s)):
    for y in range(1, len(s)):
        countfrequency(s[x:y + 1])

标签: python

解决方案


这是因为两个原因:

  1. flag的值最后是0所以它不会改变final的值
  2. 长度函数将对象作为参数,当未更改时它给出 0

因此,您可以设置标志 1 以便控制进入 if 条件或在 if 条件之外打印 len(s) 的值


推荐阅读