Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.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编程选择题_Python - Fatal编程技术网

Python编程选择题

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:

我在准备CS普通考试,我在做一些练习测试。我不明白为什么这个问题返回“=”而不是“False”。我真的不明白

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()”:并调试它:)