在Python中将变量与列表中的所有项进行比较
我需要为edx Python课程编写一个函数。其思想是计算一系列字符串中的字母和单词数,并返回平均字母数,同时仅使用for/while循环和条件。我的代码几乎可以做到这一点,但我不能。为了我的生命。找出它为什么不起作用。我已经用头撞了它两天了,我知道这可能是一件非常简单的事情,我太蠢了以至于看不见(感觉到我的挫败感?),但我不知道它是什么 如果我看第14行,逻辑是有意义的:如果字符串中的I是标点符号(不是字母),而前面的字符(在本例中是char)不是标点符号(因此是字母),那么它应该是一个单词。但它仍然将双标点符号计算为单词。但不是所有的 期望输出:在Python中将变量与列表中的所有项进行比较,python,Python,我需要为edx Python课程编写一个函数。其思想是计算一系列字符串中的字母和单词数,并返回平均字母数,同时仅使用for/while循环和条件。我的代码几乎可以做到这一点,但我不能。为了我的生命。找出它为什么不起作用。我已经用头撞了它两天了,我知道这可能是一件非常简单的事情,我太蠢了以至于看不见(感觉到我的挫败感?),但我不知道它是什么 如果我看第14行,逻辑是有意义的:如果字符串中的I是标点符号(不是字母),而前面的字符(在本例中是char)不是标点符号(因此是字母),那么它应该是一个单词。
2, 1, 2.0
6, 2, 3.0
20, 6, 4.0
Not a string
No words
38, 8, 4.75
我到底做错了什么
٩๏̯͡๏۶
最后更正:
for i in myString:
if i not in punctuation:
letters += 1
if char in punctuation:
words += 1
char = i
默认情况下,您正在向单词添加1。。。这并非在所有情况下都有效:“嗨!”
就是一个很好的例子。这实际上是延迟所有字符串的原因:只要字符串没有以单词结尾,函数就会被关闭
提示:如果最后一个单词后面没有标点符号,您只需要添加一个
默认情况下,您正在向单词添加1。。。这并非在所有情况下都有效:“嗨!”
就是一个很好的例子。这实际上是延迟所有字符串的原因:只要字符串没有以单词结尾,函数就会被关闭
提示:如果最后一个单词后没有标点符号,则只需添加一个。当字符串以标点符号字符开头时,会出现问题:前一个字符仍然是
”
,并且不被视为标点符号,因此将统计不存在的单词
您可以在符号列表中添加”
,或执行以下操作:
punctuation = " !?.,"
因为在s中测试c
如果c是s的子字符串,则返回true,如果c是s的字符,则返回aka。空字符串包含在每个字符串中
第二个问题出现在结尾,如果字符串以单词结尾,则不计算该问题(您的
单词+1
是否解决了该问题?),但如果字符串以标点符号结尾,则计算最后一个单词
在for
循环之后添加以下内容:
if char not in punctuation:
words += 1
现在不需要添加1,只需使用
average = letters / words
当字符串以标点字符开头时,会出现问题:前一个字符仍然是
”
,并且不被视为标点字符,因此计算中不存在的单词
您可以在符号列表中添加”
,或执行以下操作:
punctuation = " !?.,"
因为在s中测试c
如果c是s的子字符串,则返回true,如果c是s的字符,则返回aka。空字符串包含在每个字符串中
第二个问题出现在结尾,如果字符串以单词结尾,则不计算该问题(您的
单词+1
是否解决了该问题?),但如果字符串以标点符号结尾,则计算最后一个单词
在for
循环之后添加以下内容:
if char not in punctuation:
words += 1
现在不需要添加1,只需使用
average = letters / words
这变得更加困难,因为我假设不允许使用内置的字符串函数,如split() 我的方法是:
这变得更加困难,因为我假设不允许使用内置的字符串函数,如split() 我的方法是:
这些打印语句的期望输出是什么?输出应该是:2.0、3.0、4.0,不是字符串,没有单词,4.75作为旁白,有很多代码可能会抛出错误,您正在一个try块中包装这些错误。你应该尽量缩小范围。最近,我一直在放弃优雅,而不是通过显示器让我的思维枯燥来强迫它工作,但你绝对是对的。我在上面发布了我的解决方案。感谢所有帮助我认识到我做错了什么的伟大的人!这些打印语句的期望输出是什么?输出应该是:2.0、3.0、4.0,不是字符串,没有单词,4.75作为旁白,有很多代码可能会抛出错误,您正在一个try块中包装这些错误。你应该尽量缩小范围。最近,我一直在放弃优雅,而不是通过显示器让我的思维枯燥来强迫它工作,但你绝对是对的。我在上面发布了我的解决方案。感谢所有帮助我认识到我做错了什么的伟大的人!我想让“
”不是标点符号
是假
(见第13行),一切都好,我收回我说的话。我将标点符号转换为“!?,”
,但没有考虑它。你提出了一个正确的观点:)Aaaaaa,我从来没有想过问题会出现在字符串的开头。我在上面发布了我的解决方案,但根据你和@TemporalWolf的建议,我按单词的开头而不是结尾来计算单词。我希望“不要用标点符号”为False
(见第13行),一切正常。我收回我说的话。我将标点符号转换为“!?,”
,但没有考虑它。你提出了一个正确的观点:)Aaaaaa,我从来没有想过问题会出现在字符串的开头。我在上面发布了我的解决方案,但根据你和@TemporalWolf的建议,我按单词的开头数了数