Respuesta :
Answer:
There is a problem in the given code in the following statement:
Problem:
punctuation = r"[.?!,;:-']"
This produces the following error:
Error:
bad character range
Fix:
The hyphen - should be placed at the start or end of punctuation characters. Here the role of hyphen is to determine the range of characters. Another way is to escape the hyphen - using using backslash \ symbol.
So the above statement becomes:
punctuation = r"[-.?!,;:']"
You can also do this:
punctuation = r"[.?!,;:'-]"
You can also change this statement as:
punctuation = r"[.?!,;:\-']"
Explanation:
The complete program is as follows. I have added a print statement print('string1:',string1,'\nstring2:',string2) that prints the string1 and string2 followed by return string1 == string2 which either returns true or false. However you can omit this print('string1:',string1,'\nstring2:',string2) statement and the output will just display either true or false
import re #to use regular expressions
def compare_strings(string1, string2): #function compare_strings that takes two strings as argument and compares them
string1 = string1.lower().strip() # converts the string1 characters to lowercase using lower() method and removes trailing blanks
string2 = string2.lower().strip() # converts the string1 characters to lowercase using lower() method and removes trailing blanks
punctuation = r"[-.?!,;:']" #regular expression for punctuation characters
string1 = re.sub(punctuation, r"", string1) # specifies RE pattern i.e. punctuation in the 1st argument, new string r in 2nd argument, and a string to be handle i.e. string1 in the 3rd argument
string2 = re.sub(punctuation, r"", string2) # same as above statement but works on string2 as 3rd argument
print('string1:',string1,'\nstring2:',string2) #prints both the strings separated with a new line
return string1 == string2 # compares strings and returns true if they matched else false
#function calls to test the working of the above function compare_strings
print(compare_strings("Have a Great Day!","Have a great day?")) # True
print(compare_strings("It's raining again.","its raining, again")) # True
print(compare_strings("Learn to count: 1, 2, 3.","Learn to count: one, two, three.")) # False
print(compare_strings("They found some body.","They found somebody.")) # False
The screenshot of the program along with its output is attached.
Following are the modified program to the given question:
Program Explanation:
- Import package.
- Defining a method "compare_strings" that takes two parameters "string1, string2".
- Inside the method, parameter variables have been used that convert and hold string values into lower case.
- In the next step, a variable "punctuation" is defined that holds value.
- After this, a parameter variable is used that calls the sub-method that checks parameter value with punctuation variable value, and at the return keyword is used that check string1 value equal to string2.
- Outside the method, multiple print method is used calls the method, and prints its value.
Program:
import re #import package
def compare_strings(string1, string2):#defining a method compare_strings that takes two parameters
string1 = string1.lower().strip()#defining a variable string1 that converts and holds string value into lower case
string2 = string2.lower().strip()#defining a variable string1 that converts and holds string value into lower case
punctuation = r'[^\w\s]'#defining a variable that holds value
string1 = re.sub(punctuation, '', string1)#using the variable that calls the sub method that checks parameter value with punctuation variable value
string2 = re.sub(punctuation, '', string2)#using the variable that calls the sub method that checks parameter value with punctuation variable value
return string1 == string2#using return keyword that check string1 value equal to string2
print(compare_strings("Have a Great Day!", "Have a great day?")) # calling method that prints the return value
print(compare_strings("It's raining again.", "its raining, again")) # calling method that prints the return value
print(compare_strings("Learn to count: 1, 2, 3.", "Learn to count: one, two, three.")) # calling method that prints the return value
print(compare_strings("They found some body.", "They found somebody.")) # calling method that prints the return value
Output:
Please find the attached file.
Learn more:
brainly.com/question/21579839