I am currently learning Python and trying to solve a free tutorial question.
Here is the question.
A writer is working on their newest poem, Turing and the Machines. They have hired you to determine the word which appears the most times. You can access the lines of the poem by calling input() repeatedly, and the last line contains the three characters ###. All lines consist of words separated by single spaces; there are no digits or punctuation. Convert all the words to lower-case, and print the word that occurs the most times (we guarantee there will not be a tie).
For example, if the input is
Here is a line like sparkling wine
Line up fast or be the last
# # #
Then the output should be
since it appears twice and no other word appears twice.
..........Below is the closest thing to a solution I can get.
It still lacks , among other things, the facility to allow a user to call input() repeatedly.
And it only prints out the maximum number of the most used word , not the word itself that the question wants.
The poem is supplied by the website shell , at
Let's assume the user will input the poem one line at a time.
Please help. Thanks a million.
P_lower = P.lower()
P_split = P_lower.split()
word_list = 
wordfreq = 
for i in P_split:
for i in P_split:
poem('Here is a line like line sparkling line wine')
This doesn't use any of the "restricted" tools but only lower(), split() and sort() to return the word with the most occurrences.
def main(): done = False P = "" while not done: new_line = input() if new_line != "###": P += new_line + " " else: done = True poem_words = P.lower().split() poem_words.sort() # Initialize variables temp = "" max_count = 0 icount = 1 max_word = "" # Do the loop for i in range(len(poem_words)): if temp == poem_words[i]: icount += 1 else: temp = poem_words[i] icount = 1 if icount > max_count: max_count = icount max_word = temp print(max_word) return if __name__ == "__main__": main()