【问题标题】:Python FOR loop character countingPython FOR循环字符计数
【发布时间】:2024-01-31 07:30:02
【问题描述】:

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

【问题讨论】:

  • “计算某个字符的使用次数”是什么意思?您是否给出了特定字符和特定文件,并且您要计算该字符在文件中出现的次数?还是您要对文件中的所有字符、所有可能的字符或其他字符执行此操作?
  • 欢迎来到 *。请阅读并遵循帮助文档中的发布指南。 Minimal, complete, verifiable example 适用于此。在您发布 MCVE 代码并准确描述问题之前,我们无法有效地帮助您。你已经发布了代码,但你没有描述一个特定的问题,我怀疑这是展示问题的最小代码。
  • 我必须输入一个 .txt 文件才能读取和使用,是的。我必须使用 for 循环来“计算”它在文件中使用的次数,我要查找的四个字符是,大写字母/小写字母的数量,使用的数字和空格的数量。跨度>

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


【解决方案1】:

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

他们在告诉你什么:

character_strings = string_input.readlines()

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

string = string_input.read()

所以你应该把那个字符串传递给你所有的_counters。

uppercase = uppercase_counter(string)

等等。

对于 for 循环做同样的事情,你需要遍历字符串的符号

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

islowerisdigit 相同

(命名变量如something1something2something3 通常是一种不好的做法。也许您应该考虑更好的名称。)

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

【讨论】:

  • 谢谢!我对此感到压力,我习惯于使用 'blaaah'.count('a') 方法。问题,您使用的“符号”变量与我的“Ch”相同,所以我可以保留它,而我不知道 4 个空格!我的教授让我们使用标签,谢谢
  • 是的,您可以随意命名变量,直到您和阅读您的代码的每个人都理解它的含义。关于教授 - 这很令人惊讶。您知道,您可以自定义许多编辑器,使它们在按下制表符时放置几个(包括 4 个)空格(而不是放置实际的制表符),也许这就是他的意思,而您不知何故丢失了这些信息? @MrWhal3
  • 所以,如果我把这里的内容放在这里,保留我的三个 for 循环并使用你所做的读取文件,并更改变量名(也关闭文件)我应该很好吗?
  • 我做得很好,把我的 ch 放在那里,我把它放在这里,使用 python 四空间方法等> 即使这样做,我仍然得到一个空白的结果。跨度>
  • """ def main(): try: string_input = open('text.txt', 'r') string = string_input.read() 大写 = uppercase_counter(string) 小写 = lowercase_counter(string ) digit = digit_counter(string) for ch in string: if ch.isupper(): count1 = count1 + 1 print(count1) return count1 string_input.close() except: print('Error') main()
【解决方案2】:

让我们让它变得简单。

你必须打开读取这个文件内容...这个.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 变量字符串中的每个字符,计算每个字符出现的频率。

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

希望对你有所帮助。

【讨论】:

  • 设置默认字符就像“.islower”对吗?就像是; count.islower(字符)??我可能在这一切上想得太多,留下了我应该知道的很少/主要的关键部分,但是是的,你帮助了,谢谢
  • 用你的例子,我应该把字符放在哪里,因为我正在寻找小写/大写字母、数字和韩文空格的数量?
  • 假设您的 .txt 文件中有以下字符串:'Hello world!'
  • 输出应该是这样的: {' ': 1, '!': 1, 'H': 1, 'd': 1, 'e': 1, 'l': 3, 'o': 2, 'r': 1, 'w': 1} 这意味着你有一个空格,一个特殊字符(!),一个大写字母(H)一个小写字母(d)......和以此类推。
  • 此代码将显示文件中的所有字符类型,它自动包含小写和大写字符,因为这两种字符类型不同。