这是我的类代码,我假设使用 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()
首先,永远不要在 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
与islower
和isdigit
相同
(命名变量如something1
、something2
和something3
通常是一种不好的做法。也许你应该想出更好的名字。
附言您忘了关闭文件。在第一个except
之前插入string_input.close()
。始终建议在完成文件后关闭文件。
让我们让它变得简单。
您必须打开并阅读此文件内容...此.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
变量字符串中的每个字符,计算每个字符出现的频率。
最后,输出将是一个字典,其中键是每种字符,值是它们出现的次数,包括所有小写字母、大写字母和空格字符。
我希望我能帮助你。