这是我的班级代码,我想使用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()
答案 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
与islower
和isdigit
(something1
,something2
和something3
这样的命名变量通常是一种不好的做法。也许你应该想到更好的名字。)
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
变量字符串中的每个字符,计算每个字符出现的频率。
最后,输出将是一个字典,其中键是各种字符,值是它们出现的时间,包括所有小写字母,大写字母和空格字符。
我希望我帮助过你。