Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.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 3.x 这个程序有什么问题?为什么数字和总长度为0?_Python 3.x - Fatal编程技术网

Python 3.x 这个程序有什么问题?为什么数字和总长度为0?

Python 3.x 这个程序有什么问题?为什么数字和总长度为0?,python-3.x,Python 3.x,为什么数字和总长度仍然是0?我做错了什么。由于for line in lines语句,它应该已更改 def cleanedup(s): alphabet= 'abcdefghijklmnopqrstuvwxyz' cleantext = '' for character in s.lower(): if character in alphabet: cleantext += character else:

为什么数字和总长度仍然是0?我做错了什么。由于for line in lines语句,它应该已更改

def cleanedup(s):
    alphabet= 'abcdefghijklmnopqrstuvwxyz'
    cleantext = ''
    for character in s.lower():
        if character in alphabet:
            cleantext += character
    else:
            cleantext = ' '
    return cleantext

import shelve

shelf = shelve.open('books')
lines = shelf['Pride and Prejudice']
shelf.close()

number = 0
totalLength = 0

for line in lines:
    for word in cleanedup(line).split():
        number += 1
        totalLength += len(word)

print(totalLength, number)

这是脚本的主要问题:

        for character in s.lower():
            ...
        else:
            cleantext = ' '
我不确定这是否是
else
的正确位置,在您的情况下,您已将其放在for循环之后,因此每次运行此函数时,
cleantext
都将重置,因为for循环中没有
break
语句


尽管这可能不是您想要的(问题有点不清楚),但以下代码仍然有效:

def cleanedup(s):
    alphabet= 'abcdefghijklmnopqrstuvwxyz'
    cleantext = ''
    for character in s.lower():
        if character in alphabet:
            cleantext += character
    return cleantext


lines = ['lorem ipsum dolor sin amet', 'foo bar']

number = 0
totalLength = 0
for line in lines:
    for word in cleanedup(line).split():
        number += 1
        totalLength += len(word)

print(totalLength, number)
输出:

>>> 28 2  # 28 = total number of characters, 2 = total number of lines


PS:下一次,请提供一个更简明的示例来演示问题,而不是使用外部文件。

这是脚本的主要问题:

        for character in s.lower():
            ...
        else:
            cleantext = ' '
我不确定这是否是
else
的正确位置,在您的情况下,您已将其放在for循环之后,因此每次运行此函数时,
cleantext
都将重置,因为for循环中没有
break
语句


尽管这可能不是您想要的(问题有点不清楚),但以下代码仍然有效:

def cleanedup(s):
    alphabet= 'abcdefghijklmnopqrstuvwxyz'
    cleantext = ''
    for character in s.lower():
        if character in alphabet:
            cleantext += character
    return cleantext


lines = ['lorem ipsum dolor sin amet', 'foo bar']

number = 0
totalLength = 0
for line in lines:
    for word in cleanedup(line).split():
        number += 1
        totalLength += len(word)

print(totalLength, number)
输出:

>>> 28 2  # 28 = total number of characters, 2 = total number of lines


PS:下一次,请提供一个更简洁的示例来说明问题,而不是使用外部文件。

什么是
cleanedup
?如果您没有向我们展示所有代码,我们怎么知道您的代码在做什么?什么是
清除操作
?请创建一个。我编辑了它…什么是
cleanedup
?如果您没有向我们展示所有代码,我们怎么知道您的代码在做什么?什么是
清除操作
?请创建一个。我编辑了它…..我认为它缺少某个导入urllib.request。我想看的是《傲慢与偏见》在网上的台词,从网上可以得到总长度和数字,这是一个完全不同的问题。如果您在
urllib
方面有问题,那么您应该发布另一个问题,并且更加清楚。这里,计数函数有一些问题,但是如果这不是您的主要问题,那么创建另一个问题,更准确地说,添加一些解决您想要解决的问题的示例代码,并添加错误回溯。这样,你将有更多的机会得到你真正想要的解决方案。另一方面,如果你认为这个答案改善了你的计数功能,我很高兴你能接受:)如何接受你的答案?金星?@AllanChen我希望你能找到你实际问题的答案…如果你在这里发布新问题的链接,我可以看一看。好的,我做了,很好,找到了答案。我想在某处缺少import urllib.request。我想看的是《傲慢与偏见》在网上的台词,从网上可以得到总长度和数字,这是一个完全不同的问题。如果您在
urllib
方面有问题,那么您应该发布另一个问题,并且更加清楚。这里,计数函数有一些问题,但是如果这不是您的主要问题,那么创建另一个问题,更准确地说,添加一些解决您想要解决的问题的示例代码,并添加错误回溯。这样,你将有更多的机会得到你真正想要的解决方案。另一方面,如果你认为这个答案改善了你的计数功能,我很高兴你能接受:)如何接受你的答案?金星?@AllanChen我希望你能找到你实际问题的答案…如果你在这里发布新问题的链接,我可以看看。好的,我做到了,很好,找到了答案。