我正在尝试在脑海中处理此代码并获取输出。我得到1作为答案是不正确的。有人可以解释原因吗?
def testString(aString):
aDict = {}
for letter in aString:
num = aString.count(letter)
if num not in aDict:
aDict[num] = letter
else:
return num
return -1
text = 'eager'
print(testString(text))
答案 0 :(得分:1)
我已经格式化了您的代码:
def testString(aString):
aDict = {}
for letter in aString:
num = aString.count(letter)
if num not in aDict:
aDict[num] = letter
else:
return num
return -1
text = 'eager'
print(testString(text))
循环的每次迭代:
# First iteration
aDict = {}
letter = 'e'
num = 2
if 2 not in aDict: #True
aDict[2] = 'e'
else:
return 2
# Second iteration
aDict = {2: 'e'}
letter = 'a'
num = 1
if 1 not in aDict: #True
aDict[1] = 'a'
else:
return 1
# Third iteration
aDict = {2: 'e', 1: 'a'}
letter = 'g'
num = 1
if 1 not in aDict: #False
aDict[1] = 'g'
else:
return 1 #returns 1
答案 1 :(得分:0)
看到e
和a
后,aDict
为{2: 'e', 1: 'a'}
。在查看g
时,num
又是1
,这已经是aDict
中的关键字,因此会返回1
。
答案 2 :(得分:0)
这不是用语言解释的最简单的代码片段。此函数有效地跟踪字母出现的次数,并且一旦检测到第二个字母出现的次数与前一个字母的次数相同,它就会返回该字母的出现次数。
因为在这个例子中'e'出现两次,'a'出现一次,一旦代码终止,'g'也会出现并返回'1'