-3

这是我班级的代码,我想使用 for 循环来计算某个字符的使用次数,我被告知要执行每个字符而不是一行,这是什么意思?除了基本的弦线之外,我大部分时间都没有头绪,我现在在线,大部分时间都无法理解老师的意思。这是我在字符计数方面遇到的唯一代码创建问题。

   def main():

        try:

                uppercase = 0
                lowercase = 0
                digits = 0
                whitespace = 0

                string_input = open('text.txt', 'r')

                character_strings = string_input.readlines()

                for i in range(len(character_strings)):
                    character_strings[i] = character_strings[i].rstrip("\n")

                uppercase = uppercase_counter(character_strings)
                lowercase = lowercase_counter(character_strings)
                digits = digit_counter(character_strings)

                count1 = 0
                count2 = 0
                count3 = 0

                for ch in string:
                        if ch.isupper():
                                count1 = count1 + 1

                return count1
                print(count1)

                for ch in string:
                        if ch.islower():
                                count2 = count2 + 1

                return count2
                print(count2)

                for ch in string:
                        if ch.isdigit():
                                count3 = count3 + 1    

                return count3
                print(count3)

        except IOError:
                print("The file could not be found")
        except IndexError:
                print("There was an indexing error")
        except:
                print("An error occurred")

main()
4

2 回答 2

1

首先,永远不要在 Python 中使用制表符。始终使用 4 个空格缩进,这是一种常见的做法。当每个人都以相同的方式做这些简单的事情时,这很方便,有助于理解别人的代码。

他们在告诉你什么:

character_strings = string_input.readlines()

这一行从string_input文件中读取所有文本,用换行符分割它并返回一个行列表。如我所见,无需关心行,您可以将整个文本读取为单个长字符串

string = string_input.read()

因此,您应该将该字符串传递给_counter您拥有的所有 s 。

uppercase = uppercase_counter(string)

等等。

关于对 for 循环执行相同操作,您需要遍历字符串的符号

for symbol in string:
    if symbol.isupper():
        count1 = count1 + 1

islower和相同isdigit

(将变量命名为something1,something2something3通常是一种不好的做法。也许您应该考虑更好的名称。)

PS你忘了关闭文件。string_input.close()在 first 之前插入except。始终建议在完成文件后关闭文件。

于 2017-04-05T21:41:28.923 回答
0

让我们简单点。

您必须打开阅读此文件内容...此 .txt 文件。所以试试这个:

someFile = open('file.txt')      # Open the file
fileContent = someFile.read()    #Read its content and store it in fileContent variable

现在,您必须遍历包含在fileContent.

count = {}
for character in fileContent:
    count.setdefault(character, 0)
    count[character] = count[character] + 1

print(count)

程序循环遍历fileContent变量字符串中的每个字符,计算每个字符出现的频率。

最后,输出将是一个字典,其中键是每种字符,值是它们出现的次数,包括所有小写字母、大写字母和空格字符。

我希望我对你有所帮助。

于 2017-04-05T21:53:10.180 回答