for this program I'm trying to ask the user enter as much text as he/she wants in a file and have the program count the Total number of words that was stored in that file. For instance, if I type "Hi I like to eat blueberry pie" the program should read a total of 7 words. The program runs fine until I type in Option 6, where it counts the number of words. I always get this error: 'str' object has no attribute 'items'
#Prompt the user to enter a block of text.
done = False
textInput = ""
while(done == False):
nextInput= input()
if nextInput== "EOF":
break
else:
textInput += nextInput
#Prompt the user to select an option from the Text Analyzer Menu.
print("Welcome to the Text Analyzer Menu! Select an option by typing a number"
"\n1. shortest word"
"\n2. longest word"
"\n3. most common word"
"\n4. left-column secret message!"
"\n5. fifth-words secret message!"
"\n6. word count"
"\n7. quit")
#Set option to 0.
option = 0
#Use the 'while' to keep looping until the user types in Option 7.
while option !=7:
option = int(input())
#I get the error in this section of the code.
#If the user selects Option 6, print out the total number of words in the
#text.
elif option == 6:
count = {}
for i in textInput:
if i in count:
count[i] += 1
else:
count[i] = 1
#The error lies in the for loop below.
for word, times in textInput.items():
print(word , times)
解决方案
The issue here is that textInput is a string, so it doesn't have the items() method.
If you only want the number of words, you can try using len:
print len(textInput.split(' '))
If you want each word, and their respective occurrences, you need to use count instead of textInput:
count = {}
for i in textInput.split(' '):
if i in count:
count[i] += 1
else:
count[i] = 1
for word, times in count.items():
print(word , times)