为什么不打印此程序的等值?
Why are the equal values of this program not printing?
我正在创建两个函数,其中一个将 return 列表列表:列表中的第一个元素包含出现在字符串集合中的字母列表,第二个元素包含一个列表他们的计数。第二个是遍历第一个函数 returned 列表的列表,找到最大计数并将其 returning 作为变量 large。我正在尝试比较来自第一个函数的字母计数 returned 与来自第二个函数的最大数字 returned 以打印相等的值。出于某种原因,没有打印相等的值,我不确定为什么?有人能给我指出正确的方向吗?
def mkdict():
""" This function is creating a dictionary of letters and their frequency."""
for string in strings:
for letter in string:
if letter in array[0]:
pos = array[0].index(letter)
array[1][pos] = array[1][pos] + 1
else:
array[0].append(letter)
array[1].append(1)
return array
# Printing this function returns: [['a', 'b', 'c', 'd', 'e', 'f', 'g', 'i', 'h', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'z'], [5, 1, 2, 4, 1, 6, 3, 6, 1, 1, 1, 2, 4, 2, 3, 3, 3, 6]]
def getlar():
list = mkdict()
large = list[1][0]
for item in list[1]:
if item > large:
large = item
return large
# Printing this function returns: 6.
for num in mkdict()[1]:
if num == getlar():
print num
# This loop should print : 6 three times but it isn't.
问题是你没有在 mkdict()
中初始化 array
,所以每次你调用它时你都会添加到全局 array
变量中的计数(你没有't shown,但它显然必须存在,否则你会得到一个错误)。您应该使用局部变量。
def mkdict():
""" This function is creating a dictionary of letters and their frequency."""
array = []
for string in strings:
for letter in string:
if letter in array[0]:
pos = array[0].index(letter)
array[1][pos] = array[1][pos] + 1
else:
array[0].append(letter)
array[1].append(1)
return array
另外,你不应该每次调用 lar()
都调用 mkdict()
。计数不会改变,所以您应该只调用一次,将结果保存在一个变量中,然后将其传递给 getlar()
.
def getlar(list):
large = list[1][0]
for item in list[1]:
if item > large:
large = item
return large
counts = mkdict()
for num in counts[1]:
if num == getlar(counts):
print num
实际上,重复调用getlar()
也是不必要的,因为最大的不会改变。
counts = mkdict()
largest = getlar(counts)
for num in counts[1]:
if num = largest:
print num
我正在创建两个函数,其中一个将 return 列表列表:列表中的第一个元素包含出现在字符串集合中的字母列表,第二个元素包含一个列表他们的计数。第二个是遍历第一个函数 returned 列表的列表,找到最大计数并将其 returning 作为变量 large。我正在尝试比较来自第一个函数的字母计数 returned 与来自第二个函数的最大数字 returned 以打印相等的值。出于某种原因,没有打印相等的值,我不确定为什么?有人能给我指出正确的方向吗?
def mkdict():
""" This function is creating a dictionary of letters and their frequency."""
for string in strings:
for letter in string:
if letter in array[0]:
pos = array[0].index(letter)
array[1][pos] = array[1][pos] + 1
else:
array[0].append(letter)
array[1].append(1)
return array
# Printing this function returns: [['a', 'b', 'c', 'd', 'e', 'f', 'g', 'i', 'h', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'z'], [5, 1, 2, 4, 1, 6, 3, 6, 1, 1, 1, 2, 4, 2, 3, 3, 3, 6]]
def getlar():
list = mkdict()
large = list[1][0]
for item in list[1]:
if item > large:
large = item
return large
# Printing this function returns: 6.
for num in mkdict()[1]:
if num == getlar():
print num
# This loop should print : 6 three times but it isn't.
问题是你没有在 mkdict()
中初始化 array
,所以每次你调用它时你都会添加到全局 array
变量中的计数(你没有't shown,但它显然必须存在,否则你会得到一个错误)。您应该使用局部变量。
def mkdict():
""" This function is creating a dictionary of letters and their frequency."""
array = []
for string in strings:
for letter in string:
if letter in array[0]:
pos = array[0].index(letter)
array[1][pos] = array[1][pos] + 1
else:
array[0].append(letter)
array[1].append(1)
return array
另外,你不应该每次调用 lar()
都调用 mkdict()
。计数不会改变,所以您应该只调用一次,将结果保存在一个变量中,然后将其传递给 getlar()
.
def getlar(list):
large = list[1][0]
for item in list[1]:
if item > large:
large = item
return large
counts = mkdict()
for num in counts[1]:
if num == getlar(counts):
print num
实际上,重复调用getlar()
也是不必要的,因为最大的不会改变。
counts = mkdict()
largest = getlar(counts)
for num in counts[1]:
if num = largest:
print num