In: Computer Science
using python/IDLE
(1) Prompt the user to enter a string of their choosing. Store
the text in a string. Output the string. (1 pt)
Ex:
Enter a sample text: we'll continue our quest in space. there will be more shuttle flights and more shuttle crews and, yes; more volunteers, more civilians, more teachers in space. nothing ends here; our hopes and our journeys continue! You entered: we'll continue our quest in space. there will be more shuttle flights and more shuttle crews and, yes; more volunteers, more civilians, more teachers in space. nothing ends here; our hopes and our journeys continue!
(2) Implement a print_menu() function, which has a string as a
parameter, outputs a menu of user options for analyzing/editing the
string, and returns the user's entered menu option and the sample
text string (which can be edited inside the print_menu() function).
Each option is represented by a single character.
If an invalid character is entered, continue to prompt for a
valid choice. Hint: Implement the Quit menu option before
implementing other options. Call print_menu() in the main
section of your code. Continue to call print_menu() until the user
enters q to Quit. (3 pts)
Ex:
MENU c - Number of non-whitespace characters w - Number of words f - Fix capitalization r - Replace punctuation s - Shorten spaces q - Quit Choose an option:
(3) Implement the get_num_of_non_WS_characters() function.
get_num_of_non_WS_characters() has a string parameter and returns
the number of characters in the string, excluding all whitespace.
Call get_num_of_non_WS_characters() in the print_menu() function.
(4 pts)
Ex:
Number of non-whitespace characters: 181
(4) Implement the get_num_of_words() function. get_num_of_words()
has a string parameter and returns the number of words in the
string. Hint: Words end when a space is reached except for the
last word in a sentence. Call get_num_of_words() in the
print_menu() function. (3 pts)
Ex:
Number of words: 35
(5) Implement the fix_capitalization() function.
fix_capitalization() has a string parameter and returns an updated
string, where lowercase letters at the beginning of sentences are
replaced with uppercase letters. fix_capitalization() also returns
the number of letters that have been capitalized. Call
fix_capitalization() in the print_menu() function, and then output
the the edited string followed by the number of letters
capitalized. Hint 1: Look up and use Python functions
.islower() and .upper() to complete this task. Hint 2: Create an
empty string and use string concatenation to make edits to the
string. (3 pts)
Ex:
Number of letters capitalized: 3 Edited text: We'll continue our quest in space. There will be more shuttle flights and more shuttle crews and, yes; more volunteers, more civilians, more teachers in space. Nothing ends here; our hopes and our journeys continue!
(6) Implement the replace_punctuation() function.
replace_punctuation() has a string parameter and two keyword
argument parameters exclamation_count and
semicolon_count. replace_punctuation() updates the
string by replacing each exclamation point (!) character with a
period (.) and each semicolon (;) character with a comma (,).
replace_punctuation() also counts the number of times each
character is replaced and outputs those counts. Lastly,
replace_punctuation() returns the updated string. Call
replace_punctuation() in the print_menu() function, and then output
the edited string. (3 pts)
Ex:
Punctuation replaced exclamation_count: 1 semicolon_count: 2 Edited text: we'll continue our quest in space. there will be more shuttle flights and more shuttle crews and, yes, more volunteers, more civilians, more teachers in space. nothing ends here, our hopes and our journeys continue.
(7) Implement the shorten_space() function. shorten_space() has a
string parameter and updates the string by replacing all sequences
of 2 or more spaces with a single space. shorten_space() returns
the string. Call shorten_space() in the print_menu() function, and
then output the edited string. Hint: Look up and use Python
function .isspace(). (3 pt)
Ex:
Edited text: we'll continue our quest in space. there will be more shuttle flights and more shuttle crews and, yes, more volunteers, more civilians, more teachers in space. nothing ends here; our hopes and our journeys continue!
Hello dear,
PLEASE UPVOTE IF THIS ANSWER SEEMS HELPFUL AS IT GIVES THE CONFIDENCE TO HELP MORE STUDENTS
THANKYOU
Here is your code with comments,please go through it.
#method to print menu & handle user choice
def print_menu(input_str):
#printing menu
print('MENU')
print('c - Number of non-whitespace characters')
print('w - Number of words')
print('f - Fix capitalization')
print('r - Replace punctuation')
print('s - Shorten spaces')
print('q - Quit\n')
#getting choice
choice=input('Choose an option: ').lower()
#identifying choice
if choice=='c':
#displaying number of non white space chars in input_str
print('Number of non-whitespace
characters:',get_num_of_non_WS_characters(input_str))
elif choice=='w':
#displaying number of words in input_str
print('Number of words:',get_num_of_words(input_str))
elif choice=='f':
#fixing capitalization and getting updated string and count of values capitalized
input_str,count=fix_capilization(input_str)
#displaying results
print('Number of letters capitalized:',count)
print('Edited text:',input_str)
elif choice=='r':
#replacing punctuation, displaying updated text
input_str=replace_punctuation(input_str)
print('Edited text:',input_str)
elif choice=='s':
#shortening spaces and displaying updated text
input_str = shorten_space(input_str)
print('Edited text:',input_str)
#returning choice and input_str
return choice,input_str
#returns the number of non white space chars in input_str
def get_num_of_non_WS_characters(input_str):
count=0
#looping through each character in input_str
for i in input_str:
if not i.isspace():
#i is not a space
count+=1
return count
#returns the number of words in input_str
def get_num_of_words(input_str):
#splitting words into list of tokens by space
words=input_str.split(' ')
count=0
#counting all non empty strings in words list
for i in words:
if len(i)>0:
count+=1
return count
#method to fix capitalization and return updated string and count of letters updated
def fix_capilization(input_str):
count=0
beginning=True #starting letter should be capitalized
result=''
for i in input_str:
if beginning and i.isalpha():
#start of a sentence and i is alphabetic
if i.islower():
#converting i to upper case, incrementing count
i=i.upper()
count+=1
result+=i
#not start of a sentence
beginning=False
elif i in '?.!':
#i is either ? or . or !, next letter should be capitalized
beginning=True
result+=i
else:
#any other character
result+=i
return result,count
#method to replace exclamation and semicolons with period and comma respectively
def replace_punctuation(input_str,exclamationCount =0,semicolonCount=0):
result=''
for i in input_str:
if i=='!':
i='.'
exclamationCount+=1
elif i==';':
i=','
semicolonCount+=1
result+=i
print('Punctuation replaced')
#displaying replaced values counts
print('exclamationCount:',exclamationCount)
print('semicolonCount:',semicolonCount)
return result
#removes all double or more spaces in input_str
def shorten_space(input_str):
input_str=input_str.strip()
result=''
prev=None
for i in input_str:
if prev==None:
result+=i
elif i==' ':
if prev !=' ':
result+=i
else:
result+=i
prev=i
return result
if __name__ == '__main__':
#getting input, printing it
input_str=input('Enter a sample text:\n')
print('\nYou entered:',input_str)
choice=' '
#looping until choice becomes q
while choice!='q':
choice,input_str=print_menu(input_str)
OUTPUT
SCREENSHOT OF PROGRAM as per request.