List Manipulation Class 11 Cs
List Manipulation Class 11 Cs
String Manipulation
Question 1
Negative index -1 belongs to .......... of string.
first character
last character ✓
second last character
second character
Question 2
Which of the following is/are not legal string operators?
in
+
*
/✓
Question 3
Which of the following functions will return the total number of characters in a string?
count()
index()
len() ✓
all of these
Question 4
Which of the following functions will return the last three characters of a string s?
s[3:]
s[:3]
s[-3:] ✓
s[:-3]
Question 5
Which of the following functions will return the first three characters of a string s?
s[3:]
s[:3] ✓
s[-3:]
s[:-3]
Question 6
Which of the following functions will return the string in all caps?
upper() ✓
toupper()
isupper()
to-upper()
Question 7
Which of the following functions will return the string with every 'P' replaced with a 'z'?
find()
index()
replace() ✓
split()
Question 8
Which of the following functions will return a list containing all words of the string?
find()
index()
partition()
split() ✓
Question 9
find()
index()
partition() ✓
split()
Question 10
char('char')
ord('char') ✓
ascii('char')
All of these
Question 12
Which method should I use to convert String "Python programming is fun" to "Python
Programming Is Fun" ?
capitalize()
title() ✓
istitle()
upper()
Question 13
str1 = 'Wah'
print(str1*2)
WahWah ✓
TypeError: unsupported operand type(s) for * : 'str' and 'int'
WWaahh
Wah2
Question 14
Question 15
str1 = 'Waha'
print(str1[:3] + 'Bhyi' + str1[-3:])
Wah Bhyi Wah
WahBhyiaha ✓
WahBhyiWah
WahBhyiWaha
Question 16
Question 17
Choose the correct function to get the character from ASCII number.
ascii(number)
char(number)
chr(number) ✓
all of these
Question 18
True
False ✓
Error
nothing
Question 19
Which of the following functions removes all leading and trailing spaces from a string?
lstrip()
rstrip()
strip() ✓
all of these
Question 20
Which of the following functions will raise an error if the given substring is not found in the
string?
find()
index() ✓
replace()
all of these
Fill in the Blanks
Question 1
The string indexes begin 0 onwards.
Question 2
For strings, + operator performs concatenation.
Question 3
For strings, * operator performs replication.
Question 4
The in and not in are membership operators for strings (in, not in).
Question 5
The ord() returns the ASCII value of a given character.
Question 6
If a string contains letters and digits, function isalnum() will return true.
Question 7
'ab'.isalpha() will return value as True.
Question 8
To get each word's first letter capitalized, title() function is used.
Question 9
Function index() raises an exception if the substring is not found.
Question 10
Function split() divides a line of text into individual words.
True/False Questions
Question 1
Strings have both positive and negative indexes.
True
Question 2
Python does not support a character type; a single character is treated as strings of length
one.
True
Question 3
Strings are immutable in Python, which means a string cannot be modified.
True
Question 4
Like '+', all other arithmetic operators are also supported by strings.
False
Question 5
Functions capitalize() and title() return the same result.
False
Question 6
Functions partition() and split() work identically.
False
Question 7
The find() and index() are similar functions.
True
Question 8
The find() does not raise an exception if the substring is not found.
True
Question 9
The partition() function's result is always a 3-element tuple.
True
Question 10
The split() returns always a 3-element list.
False
Question 1
Write a Python script that traverses through an input string and prints its characters in
different lines — two characters per line.
Answer
Question 2
Out of the following operators, which ones can be used with strings in Python?
Answer
Question 3
Answer
FuntrialOotyOotyOoty
Question 4
Answer
'abc' + .3 is not a legal string operation in Python. The operands of + operator should be both
string or both numeric. Here one operand is string and other is numeric. This is not allowed
in Python.
Question 5
Can you say strings are character lists? Why? Why not?
Answer
Strings are sequence of characters where each character has a unique index. This implies
that strings are iterable like lists but unlike lists they are immutable so they cannot be
modified at runtime. Therefore, strings can't be considered as character lists. For example,
str = 'cat'
# The below statement
# is INVALID as strings
# are immutable
str[0] = 'b'
(a) S[: n]
(b) S[n :]
(c) S[n : n]
(d) S[1 : n]
(e) S[n : length - 1]
Answer
(a) CARPE
(b) DIEM
(c) (Empty String)
(d) ARPE
(e) DIE
Question 7
From the string S = "CARPE DIEM", which ranges return "DIE" and "CAR"?
Answer
Question 8
What happens when from a string slice you skip the start and/or end values of the slice?
Answer
If start value is skipped, it is assumed as 0 i.e. the slice begins from the start of the string.
If end value is skipped, it is assumed as the last index of the string i.e. the slice extends till
the end of the string.
Question 9
Answer
1. hello world
2. HELLO WORLD
3. -1
4. 6
5. -1
6. False
7. False
8. True
9. False
Explanation
1.upper() first converts all letters of "Hello World" to uppercase. Then "HELLO
WORLD".lower() converts all letters to lowercase.
2.lower() first converts all letters of "Hello World" to lowercase. Then "hello world".upper()
converts all letters to uppercase.
3."Hello World".find("Wor", 1, 6) searches for the presence of substring "Wor" between 1 and
6 indexes of string "Hello World". Substring from 1 to 6 index is "ello W". As "Wor" is not
present in this hence the result is False.
4."Hello World".find("Wor") searches for the presence of substring "Wor" in the entire "Hello
World" string. Substring "Wor" starts at index 6 of "Hello World" hence the result is 6.
5."Hello World".find("wor") searches for the presence of substring "wor" in the entire "Hello
World" string. find() performs case sensitive search so "wor" and "Wor" are different hence
the result is -1.
6."Hello World".isalpha( ) checks if all characters in the string as alphabets. As a space is
also present in the string hence it returns False.
8."Hello World".isalnum( ) checks if all characters in the string are either alphabets or digits.
As a space is also present in the string which is neither an alphabet nor a string hence it
returns False.
9."1234".isdigit( ) checks if all characters in the string are digits or not. As all characters are
digits hence the result is True.
As "FGH" in the string "123FGH" are not digits hence the result is False.
Question 10
Which functions would you choose to use to remove leading and trailing white spaces from a
given string?
Answer
lstrip() removes leading white-spaces, rstrip() removes trailing white-spaces and strip()
removes leading and trailing white-spaces from a given string.
Question 11
Try to find out if for any case, the string functions isalnum( ) and isalpha( ) return the same
result
Answer
isalnum( ) and isalpha( ) return the same result in the following cases:
If string contains only alphabets then both isalnum( ) and isalpha( ) return True. For example,
"Hello".isalpha() and "Hello".isalnum() return True.
If string contains only special characters and/or white-spaces then both isalnum( ) and
isalpha( ) return False. For example, "*#".isalpha() and "*#".isalnum() return False.
Question 12
Suggest appropriate functions for the following tasks:
isdigit()
find()
capitalize()
upper()
isupper()
rstrip(characters)
lstrip()
Question 13
In a string slice, the start and end values can be beyond limits. Why?
Answer
String slicing always returns a subsequence and empty subsequence is a valid sequence.
Thus, when a string is sliced outside the bounds, it still can return empty subsequence and
hence Python gives no errors and returns empty subsequence.
Question 14
Can you specify an out of bound index when accessing a single character from a string?
Why?
Answer
We cannot specify an out of bound index when accessing a single character from a string, it
will cause an error. When we use an index, we are accessing a constituent character of the
string. If the index is out of bounds there is no character to return from the given index hence
Python throws string index out of range error.
Question 15
Can you add two strings? What effect does ' + ' have on strings?
Answer
Yes two strings can be added using the '+' operator. '+' operator concatenates two strings.
print("""
1
2
3
""")
Answer
1
2
3
Question 1b
What is the result of the following expression?
text = "Test.\nNext line."
print (text)
Answer
Test.
Next line.
Question 1c
What is the result of the following expression?
s = '0123456789'
print(s[3], ", ", s[0 : 3], " - ", s[2 : 5])
print(s[:3], " - ", s[3:], ", ", s[3:100])
print(s[20:], s[2:1], s[1:1])
Answer
3 , 012 - 234
012 - 3456789 , 3456789
Question 1e
What is the result of the following expression?
s ='987654321'
print (s[-1], s[-3])
print (s[-3:], s[:-3])
print (s[-100:-3], s[-100:3])
Answer
13
321 987654
987654 987
Question 2a
What will be the output produced by following code fragments?
y = str(123)
x = "hello" * 3
print (x, y)
x = "hello" + "world"
y = len(x)
print (y, x)
Answer
Output
hellohellohello 123
10 helloworld
Explanation
str(123) converts the number 123 to string and stores in y so y becomes "123". "hello" * 3
repeats "hello" 3 times and stores it in x so x becomes "hellohellohello".
Question 2b
What will be the output produced by following code fragments?
x = "hello" + \
"to Python" + \
"world"
for char in x :
y = char
print (y, ' : ', end = ' ')
Answer
Output
h : e : l : l : o : t : o : : P : y : t : h : o : n : w : o : r : l : d :
Explanation
Inside the for loop, we are traversing the string "helloto Pythonworld" character by character
and printing each character followed by a colon (:).
Question 2c
What will be the output produced by following code fragments?
x = "hello world"
print (x[:2], x[:-2], x[-2:])
print (x[6], x[2:4])
print (x[2:-3], x[-4:-2])
Answer
Output
he hello wor ld
w ll
llo wo or
Explanation
x[:2] ⇒ he
x[:-2] ⇒ hello wor
x[-2:] ⇒ ld
x[6] ⇒ w
x[2:4] ⇒ ll
x[2:-3] ⇒ llo wo
x[-4:-2] ⇒ or
Question 3
Carefully go through the code given below and answer the questions based on it :
This is a test
This is a
is a test
is a
None of these
Answer
This is a test
s is a t
is a test
is a
None of these
Answer
Option 2 — s is a t
Explanation
As input is 3 and inside the while loop, inputlnt decreases by 1 in each iteration so the while
loop executes 4 times for inputlnt values 3, 2, 1, 0.
1st Iteration
testStr = "This is a test"
2nd Iteration
testStr = "his is a tes"
3rd Iteration
testStr = "is is a te"
4th Iteration
testStr = "s is a t"
0
1
2
3
None of these
Answer
Explanation
Value of inputlnt will be -1 as till inputlnt >= 0 the while loop will continue executing.
False
True
0
1
None of these
Answer
Option 2 — True
Explanation
As input is 2 and inside the while loop, inputlnt decreases by 1 in each iteration so the while
loop executes 3 times for inputlnt values 2, 1, 0.
1st Iteration
testStr = "This is a test"
2nd Iteration
testStr = "his is a tes"
3rd Iteration
testStr = "is is a te"
After the while loop finishes executing, value of testStr is "is is a te". 't' in testStr returns True
as letter t is present in testStr.
Question 4
Carefully go through the code given below and answer the questions based on it :
testStr = "abcdefghi"
inputStr = input ("Enter integer:")
inputlnt = int(inputStr)
count = 2
newStr = ''
while count <= inputlnt :
newStr = newStr + testStr[0 : count]
testStr = testStr[2:] #Line 1
count = count + 1
print (newStr) # Line 2
print (testStr) # Line 3
print (count) # Line 4
print (inputlnt) # Line 5
(i) Given the input integer 4, what output is produced by Line 2?
abcdefg
aabbccddeeffgg
abcdeefgh
ghi
None of these
Answer
Option 3 — abcdeefgh
Explanation
Input integer is 4 so while loop will execute 3 times for values of count as 2, 3, 4.
1st Iteration
newStr = newStr + testStr[0:2]
⇒ newStr = '' + ab
⇒ newStr = ab
testStr = testStr[2:]
⇒ testStr = cdefghi
2nd Iteration
newStr = newStr + testStr[0:3]
⇒ newStr = ab + cde
⇒ newStr = abcde
testStr = testStr[2:]
⇒ testStr = efghi
3rd Iteration
newStr = newStr + testStr[0:4]
⇒ newStr = abcde + efgh
⇒ newStr = abcdeefgh
testStr = testStr[2:]
⇒ testStr = ghi
abcdefg
aabbccddeeffgg
abcdeefgh
ghi
None of these
Answer
Option 4 — ghi
Explanation
Input integer is 4 so while loop will execute 3 times for values of count as 2, 3, 4.
1st Iteration
testStr = testStr[2:]
⇒ testStr = cdefghi
2nd Iteration
testStr = testStr[2:]
⇒ testStr = efghi
3rd Iteration
testStr = testStr[2:]
⇒ testStr = ghi
0
1
2
3
None of these
Answer
0
1
2
3
None of these
Answer
Option 4 — 3
Explanation
The input is converted from string to integer and after that its value is unchanged in the code
so line 5 prints the input integer 3.
testStr = testStr[2:0]
testStr = testStr[2:-1]
testStr = testStr[2:-2]
testStr = testStr - 2
None of these
Answer
Question 5
Carefully go through the code given below and answer the questions based on it :
0
1
2
3
4
Answer
Option 1 — 0
Explanation
In the input abcd, all the letters are between a and m so the condition — if ele >= 'a' and ele
<= 'm' is always true. Hence, biglnt is 0.
0
1
2
3
None of these
Answer
Option 3 — 2
Explanation
In the input Hi Mom, only two letters i and m satisfy the condition — if ele >= 'a' and ele <=
'm'. Hence, value of littlelnt is 2.
0
1
2
3
None of these
Answer
Option 4 — 3
Explanation
In the input Hi Mom, 3 characters H, M and space are not between a and z. So for these 3
characters the statement in else part — otherlnt = otherlnt + 1 is executed. Hence, value of
otherlnt is 3.
Option 4 — False
Explanation
As all characters in the input string 1+2 =3 are not digits hence isdigit() returns False.
(v) Give the input Hi Mom, what changes result from modifying Line 1 from
No change
otherlnt would be larger
littlelnt would be larger
biglnt would be larger
None of these
Answer
Explanation
For letter m, now else case will be executed increasing the value of otherlnt.
Question 6
Carefully go through the code given below and answer the questions based on it :
if len(in1Str)>len(in2Str):
small = in2Str
large = in1Str
else:
small = in1Str
large = in2Str
newStr = ''
for element in small:
result = int(element) + int(large[0])
newStr = newStr + str(result)
large = large[1:]
print (len(newStr)) # Line 1
print (newStr) # Line 2
print (large) # Line 3
print (small) # Line 4
(i) Given a first input of 12345 and a second input of 246, what result is produced by Line 1?
1
3
5
0
None of these
Answer
Option 2 — 3
Explanation
As length of smaller input is 3, for loop executes 3 times so 3 characters are added to
newStr. Hence, length of newStr is 3.
(ii) Given a first input of 12345 and a second input of 246, what result is produced by Line 2?
369
246
234
345
None of these
Answer
Option 1 — 369
Explanation
For loop executes 3 times as length of smaller input is 3.
1st Iteration
result = 2 + 1
⇒ result = 3
large = 2345
2nd Iteration
result = 4 + 2
⇒ result = 6
3rd Iteration
result = 6 + 3
⇒ result = 9
large = 45
(iii) Given a first input of 123 and a second input of 4567, what result is produced by Line 3?
3
7
12
45
None of these
Answer
Option 2 — 7
Explanation
For loop executes 3 times as length of smaller input is 3. Initial value of large is 4567.
1st Iteration
large = large[1:]
⇒ large = 567
(iv) Given a first input of 123 and a second input of 4567, what result is produced by Line 4?
123
4567
7
3
None of these
Answer
Option 1 — 123
Explanation
As length of 123 is less than length of 4567 so 123 is assigned to variable small and gets
printed in line 4.
Question 7a
Find the output if the input string is 'Test'.
Output
TesttseT
Explanation
The for loop reverses the input string and stores the reversed string in variable RS. After that
original string and reversed string are concatenated and printed.
Question 7b
Find the output if the input string is 'Test'.
The program gives an error at line RS = ch + 2 + RS. The operands to + are a mix of string
and integer which is not allowed in Python.
Question 8a
Find the errors. Find the line numbers causing errors.
S = "PURA VIDA"
print(S[9] + S[9 : 15])
Answer
The error is in line 2. Length of string S is 9 so its indexes range for 0 to 8. S[9] is causing
error as we are trying to access out of bound index.
Question 8b
Find the errors. Find the line numbers causing errors.
S = "PURA VIDA"
S1 = S[: 10] +S[10 :]
S2 = S[10] + S[-10]
Answer
The error is in line 3. Length of string S is 9 so its forward indexes range for 0 to 8 and
backwards indexes range from -1 to -9. S[10] and S[-10] are trying to access out of bound
indexes.
Question 8c
Find the errors. Find the line numbers causing errors.
S = "PURA VIDA"
S1 = S * 2
S2 = S1[-19] + S1[-20]
S3 = S1[-19 :]
Answer
The error is in line 3. S1[-19] and S1[-20] are trying to access out of bound indexes.
Question 8d
Find the errors. Find the line numbers causing errors.
S = "PURA VIDA"
S1 = S[: 5]
S2 = S[5 :]
S3 = S1 * S2
S4 = S2 + '3'
S5 = S1 + 3
Answer
The errors are in line 4 and line 6. Two strings cannot be multiplied. A string and an integer
cannot be added.
Question 9
What is the output produced?
Answer
(i) 3
The starting index of substring "never" in "whenever" is 3.
(ii) -1
Substring "what" is not present in "whenever".
Question 10
What is the output produced?
Answer
(i) '123-365-1319'
Question 11
Given a string S, write expressions to print
print(S[:5])
print(S[8])
for a in range(-1, (-len(S) - 1), -1) :
print(S[a], end = '')
for a in range(-1, (-len(S) - 1), -2) :
print(S[a], end = '')
Type C: Programming Practice/Knowledge based Questions
Question 1
Write a program to count the number of times a character occurs in the given string.
Solution
str = input("Enter the string: ")
ch = input("Enter the character to count: ");
c = str.count(ch)
print(ch, "occurs", c, "times")
Output
Enter the string: KnowledgeBoat
Enter the character to count: e
e occurs 2 times
Question 2
Write a program which replaces all vowels in the string with '*'.
Solution
str = input("Enter the string: ")
newStr = ""
for ch in str :
lch = ch.lower()
if lch == 'a' \
or lch == 'e' \
or lch == 'i' \
or lch == 'o' \
or lch == 'u' :
newStr += '*'
else :
newStr += ch
print(newStr)
Output
Enter the string: Computer Studies
C*mp*t*r St*d**s
Question 3
Write a program which reverses a string and stores the reversed string in a new string.
Solution
str = input("Enter the string: ")
newStr = ""
for ch in str :
newStr = ch + newStr
print(newStr)
Output
Enter the string: computer studies
seiduts retupmoc
Question 4
Write a program that prompts for a phone number of 10 digits and two dashes, with dashes
after the area code and the next three numbers. For example, 017-555-1212 is a legal input.
Display if the phone number entered is valid format or not and display if the phone number is
valid or not (i.e., contains just the digits and dash at specific places.)
Solution
phNo = input("Enter the phone number: ")
length = len(phNo)
if length == 12 \
and phNo[3] == "-" \
and phNo[7] == "-" \
and phNo[:3].isdigit() \
and phNo[4:7].isdigit() \
and phNo[8:].isdigit() :
print("Valid Phone Number")
else :
print("Invalid Phone Number")
Output
Enter the phone number: 017-555-1212
Valid Phone Number
=====================================
Enter the phone number: 017-5A5-1212
Invalid Phone Number
Question 5
Write a program that should do the following :
=====================================
Number of words
Number of characters (including white-space and punctuation)
Percentage of characters that are alphanumeric
Hints
Assume any consecutive sequence of non-blank characters is a word.
Solution
str = input("Enter a few sentences: ")
length = len(str)
spaceCount = 0
alnumCount = 0
for ch in str :
if ch.isspace() :
spaceCount += 1
elif ch.isalnum() :
alnumCount += 1
print("Original Sentences:")
print(str)
Solution
while True :
str = input("Please enter a sentence, or 'q' to quit : ")
newStr = ""
if str.lower() == "q" :
break
for ch in str :
if ch.islower() :
newStr += ch.upper()
elif ch.isupper() :
newStr += ch.lower()
else :
newStr += ch
print(newStr)
Output
Please enter a sentence, or 'q' to quit : This is the Bomb!
tHIS IS THE bOMB!
Please enter a sentence, or 'q' to quit : What's up Doc ???
wHAT'S UP dOC ???
Please enter a sentence, or 'q' to quit : q
Question 8
Write a program that does the following :
takes two inputs : the first, an integer and the second, a string
from the input string extract all the digits, in the order they occurred, from the string.
if no digits occur, set the extracted digits to 0
add the integer input and the digits extracted from the string together as integers
print a string of the form :
"integer_input + string_digits = sum"
For example :
For inputs 12, 'abc123' → '12 + 123 = 135'
For inputs 20, 'a5b6c7' → '20 + 567 =587'
For inputs 100, 'hi mom' → '100 + 0 = 100'
Solution
num = int(input("Enter an integer: "))
str = input("Enter the string: ")
digitsStr = ''
digitsNum = 0;
for ch in str :
if ch.isdigit() :
digitsStr += ch
if digitsStr :
digitsNum = int(digitsStr)
=====================================
Enter an integer: 20
Enter the string: a5b6c7
20 + 567 = 587
=====================================
PANDA
P n
y o
t h
Solution
str1 = input("Enter first string: ")
str2 = input("Enter second string: ")
small = str1
large = str2
print(small)
lenLarge = len(large)
for i in range(lenLarge // 2) :
print(' ' * i, large[i], ' ' * (lenLarge - 2 * i), large[lenLarge - i - 1], sep='')
Output
Enter first string: Python
Enter second string: PANDA
PANDA
P n
y o
t h
Question 10
Write a program to convert a given number into equivalent Roman number (store its value as
a string). You can use following guidelines to develop solution for it:
From the given number, pick successive digits, using %10 and /10 to gather the digits from
right to left.
The rules for Roman Numerals involve using four pairs of symbols for ones and five, tens
and fifties, hundreds and five hundreds. An additional symbol for thousands covers all the
relevant bases.
When a number is followed by the same or smaller number, it means addition. "II" is two 1's
= 2. "VI" is 5 + 1 = 6.
When one number is followed by a larger number, it means subtraction. "IX" is 1 before 10 =
9. "IIX isn't allowed, this would be "VIII". For numbers from 1 to 9, the symbols are "I" and
"V", and the coding works like this. "I" , "II", "III", "IV", "V", "VI", "VII", "VIII", "IX".
The same rules work for numbers from 10 to 90, using "X" and "L". For numbers from 100 to
900, using the symbols "C" and "D". For numbers between 1000 and 4000, using "M".
Here are some examples. 1994 = MCMXCIV, 1956 = MCMLVI, 3888= MMMDCCCLXXXVIII
Solution
n = int(input("Enter the number: "))
num = (1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1)
rom = ('M', 'CM', 'D', 'CD','C', 'XC','L','XL','X','IX','V','IV','I')
result = ''
for i in range(len(num)) :
count = int(n / num[i])
result += str(rom[i] * count)
n -= num[i] * count
print(result)
Output
Enter the number: 1994
MCMXCIV
=====================================
=====================================
Solution
str = input("Enter a string: ")
count = 0
for ch in str :
if ch.isspace() :
count += 1
print("No of words =", (count + 1))
Output
Enter a string: Python was conceived in the late 1980s by Guido van Rossum at Centrum
Wiskunde & Informatica (CWI) in the Netherlands.
No of words = 20
Question 12
Write a program to input a formula with some brackets and checks, and prints out if the
formula has the same number of opening and closing parentheses.
Solution
str = input("Enter a formula: ")
count = 0
for ch in str :
if ch == '(' :
count += 1
elif ch == ')' :
count -= 1
if count == 0 :
print("Formula has same number of opening and closing parentheses")
else :
print("Formula has unequal number of opening and closing parentheses")
Output
Enter a formula: s(s-a)(s-b)(s-c)
Formula has same number of opening and closing parentheses
=====================================
Question 13
Write a program that inputs a line of text and prints out the count of vowels in it.
Solution
str = input("Enter a string: ")
count = 0
for ch in str :
lch = ch.lower()
if lch == 'a' \
or lch == 'e' \
or lch == 'i' \
or lch == 'o' \
or lch == 'u' :
count += 1
Question 14
Write a program to input a line of text and print the biggest word (length wise) from it.
Solution
str = input("Enter a string: ")
words = str.split()
longWord = ''
for w in words :
if len(w) > len(longWord) :
longWord = w
Question 15
Write a program to input a line of text and create a new line of text where each word of input
line is reversed.
Solution
str = input("Enter a string: ")
words = str.split()
newStr = ""
for w in words :
rw = ""
for ch in w :
rw = ch + rw
newStr += rw + " "
print(newStr)
Output
Enter a string: Python is Fun
nohtyP si nuF