Create a program which will read a phrase from the user and create a framed version of it for printing. For example, the phrase "hello world"would result in: ********* * hello * * world * ********* Whereas the phrase "the
Create a program which will read a phrase from the user and create a framed version of it for printing. For example, the phrase "hello world"would result in:
*********
* hello *
* world *
*********
Whereas the phrase "the sky is falling"might be:
***********
* the *
* sky *
* is *
* falling *
***********
Or:
***********
* the *
* sky *
* is *
* falling *
***********
Or even:
***********
* the *
* sky *
* is *
* falling *
***********
Depending on whether or not the user asked for left, centered, or right justification — respectively — of the phrase's words within the frame. Note how the frame exactly fits the phrase based on the longest word within. Neat, eh?
The phrase "O | -+- | /-\"when centered would become:
*******
* O *
* | *
* -+- *
* | *
* /-\ *
*******
(Okay, so it's a sad excuse for a stick figure, but hey! I've never claimed to be a great good decent artist, now have I? *phbbt*)
Also allow the user to specify what character you are to make the frame from. Typical choices would be @, #, *, +, x, X, o, or O (use a menu for the user to tell you which character they'd like to use). But let them tell you anything that will print just fine. (Hint: cctype has a function called isprint that tells if a character is printable.)
Give them the option of reading phrases from the keyboard or a file they specify (assume each line of the input stream contains a single phrase).
The user should also be able to choose if the framed phrase is printed on the screen or into a file they specify.
In case it isn't clear, you should create a 'frame the phrase' class. It should have overloaded operators for at leastinput and output. (Although concatenation might prove interesting, too...)
Make sure the program meets all the requirements above!
1.#Begin
2.Phrase = input("Please Enter a Phrase:\t")
3.Position = input("Please Enter the position to be displayed for the Phrase which is entered:\nEnter (Center/Right/Left) : \t")
4.character = input("Please Enter the Character by which you wanted to construct the frame:\nPlease Enter (@,#,*,+,x,X,o or 0):\t")
5.#End
7.#Phrase is not eqaul to empty
8.if(Phrase!=""):
9.#When Position is not center right or left , Keeping frame in left position
10.if(Position.lower() != "center" and Position.lower() != "left" and Position.lower() != "right" ):
11.Position = "left"
else:
12.Position = Position.lower()
13.#When Character is not in the list given in the quesiont , Considering the default character as "*"
14.if(Character != "@" and Character != "#" and Character != "*" and Character != "+" and Character != "x" and
15.Character != "X" and Character != "o" and Character != "0"):
16.Character = "*"
else:
17.Character = Character
18.PhraseSplit = Phrase.split(" ")
19.maxlength = 0 #defining the maxlength variable
20.index = 0
21.for word in PhraseSplit:
22.if(len(word) > maxlength):
23.maxlength = len(word)
24.index = PhraseSplit.index(word)
25.#To print the final output on the console
26.print("\n"+Character*(maxlength+2))
for word in PhraseSplit:
27.print(Character,end="")#To print the message on console
if(Position == "center"):
28.print(word.center(maxlength," "),end="")#To print the word on center
29.elif(Position == "right"):
30.print(word.rjust(maxlength," "),end="")#To print the word on right
31.elif(Position == "left"):
32.print(word.ljust(maxlength," "),end="")#To print the word on left
print(Character)
33.print(Character*(maxlength+2))
Trending now
This is a popular solution!
Step by step
Solved in 4 steps with 3 images