Python编程选择题
我在准备CS普通考试,我在做一些练习测试。我不明白为什么这个问题返回“=”而不是“False”。我真的不明白Python编程选择题,python,Python,我在准备CS普通考试,我在做一些练习测试。我不明白为什么这个问题返回“=”而不是“False”。我真的不明白 splitLine = aStr.split() def mostlyLongWords(aStr, threshold): splitLine = aStr.split() shortCount = 0 longCount = 0 for word in splitLine: if len(word) < threshold:
splitLine = aStr.split()
def mostlyLongWords(aStr, threshold):
splitLine = aStr.split()
shortCount = 0
longCount = 0
for word in splitLine:
if len(word) < threshold:
shortCount += 1
else:
longCount += 1
if shortCount > longCount:
return False
if longCount > longCount:
return True
return '='
seussLine = 'There is no one alive who is you-er than you'
print(mostlyLongWords(seussLine, 5))
splitLine=aStr.split()
def mostlyLongWords(应科院,基本要求):
splitLine=aStr.split()
短计数=0
longCount=0
对于拆分行中的单词:
如果len(word)<阈值:
短计数+=1
其他:
longCount+=1
如果短计数>长计数:
返回错误
如果longCount>longCount:
返回真值
返回“=”
seussLine='没有人比你还活着'
打印(最长单词(seussLine,5))
a。正确B假
c=
DSyntaxError:不兼容的返回类型
E以上这些都不是假设你已经忠实地复制了,这是一个技巧性的问题。代码中有两个严重的错误,它们导致代码无法按预期运行,您应该找到这些错误 您希望它做的是计算短单词和长单词的数量,并根据它们的比较方式返回
False
,'='
,或True
。由于测试句子有7个短单词和3个长单词,它应该返回False
但是if
检查缩进了for
循环中。这意味着,你不是在所有的单词都数完之后再做检查,而是在每一个单词之后做检查。因此,一旦出现不平衡,1>0
,那么您只需检查第一个单词是否长,而不是大多数单词是否长。由于'There'
很长(5个或更多字符),因此它应该返回True
但还有一个错误;第二个比较不是longCount>shortCount
,而是longCount>longCount
。这显然永远不会是真的。因此,程序将循环,直到短单词的数量超过长单词的数量,在这种情况下,它将返回False
——或者它将脱离循环并返回'='
。在这种情况下,只要您找到单词'no'
,短词
是2
,长词
是1
,因此它返回False
如果正确答案应该是
=
,那么要么你没有如实地复制,要么答案就是错的。一种可能性是,在复制问题时,您无意中纠正了第三个错误。例如,我注意到函数外部有一个splitLine=asr.split()
。这是一件奇怪的事情,它应该是一个namererror
。但是,如果在代码前面的某个地方有一行,比如说,aStr='
,您没有向我们展示,那么您将设置一个名为splitLine
的有效全局变量。如果实际代码中有输入错误,比如说,splitline=asr.split()
,那么您的函数将在该全局变量上循环。如果它是,比如说,''.split()
,或者'There'
,那么,再加上其他两个bug,这将导致'='
被返回。它向meIt返回False它将返回False
尝试在第一行定义aStr
的地方执行它。如果删除第一行,也为我返回False
。在函数项下写下“import pdb;pdb.set_trace()”:并调试它:)