Python FOR循环字符计数

时间:2017-04-05 21:24:02

标签: python python-3.x coding-style computer-science charactercount

这是我的班级代码,我想使用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()

2 个答案:

答案 0 :(得分:1)

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

他们告诉你的是什么:

character_strings = string_input.readlines()

此行读取string_input文件中的所有文本,按换行符号拆分并返回行列表。正如我所看到的,没有必要关心线条,你可以将整个文本读成一个长字符串

string = string_input.read()

所以你应该将那个字符串传递给你拥有的所有_counter

uppercase = uppercase_counter(string)

等等。

关于对for循环执行相同操作,您需要迭代字符串

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

islowerisdigit

相同

something1something2something3这样的命名变量通常是一种不好的做法。也许你应该想到更好的名字。)

P上。 S.你忘了关闭文件。在第一个string_input.close()之前插入except。总是建议在完成后关闭文件。

答案 1 :(得分: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变量字符串中的每个字符,计算每个字符出现的频率。

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

我希望我帮助过你。