Python M2 PDF
Python M2 PDF
Module 2
Iteration, Strings, Files (Ch 5,6,7 of Text Book 1)
2.1 Iteration
Iteration is a processing repeating some task. In a real time programming, we require a set of
statements to be repeated certain number of times and/or till a condition is met. Every
programming language provides certain constructs to achieve the repetition of tasks. In this
section, we will discuss various such looping structures
2.1.1 while Statement
The loop has the syntax as below
while condition:
Statement_1
Statement_2
Statement_3
…………………………
Statement_n
Statement_after_while
Here, while is a keyword. The condition is evaluated first. Till its value remains true, the
statement_1 to statement_n will be executed. When the condition becomes false, the loop is
terminated and statements after the loop will be executed.
Consider an example –
n=1
while n<=5:
#observe indentation
n=n+1
over
In the above example, a variable n is initialized to 1. Then the condition n<=5 is beign checked
as the condition is true, the block of code containing print statement (print(n)) and increment
statement (n=n+1)are executed. After these two lines, condition is checked again. The
procedure continues till condition becomes false, that is when n becomes 6. Now, the while-
loop is terminated and next statement after the loop will be executed. Thus, in this example,
the loop is iterated for 5 times..
Note that, a variable n is initialized before starting the loop and it is incremented inside the
loop. Such a variable that changes its value for every iteration and controls the total
RNSIT 1
Python Application Programming (Professional Elective – 18EC646)
execution of the loop is called as iteration variable or counter variable. If the count variable
is not updated properly within the loop, then the loop may not terminate and keeps executing
infinitely.
n=1
while True:
print(n)
n=n+1
Here, the condition specified for the loop is the constant True, which will never get
terminated. Sometimes, the condition is given such a way that it will never become false and
hence by restricting the program control to go out of the loop. This situation may happen
either due to wrong condition or due to not updating the counter variable.
In some situations, we deliberately want to come out of the loop even before the normal
termination of the loop. For this purpose break statement is used. The following example
depicts the usage of break. Here, the values are taken from keyboard until a negative number
is entered. Once the input is found to be negative, the loop terminates.
while True:
x=int(input("Enter a number:"))
if x>= 0:
print("You have entered ",x)
else:
print("You have entered a negative number!!")
break #terminates the loop
Output
Enter a number:23
You have entered 23
Enter a number:12
You have entered 12
Enter a number:45
You have entered 45
Enter a number:0
You have entered 0
Enter a number:-2
You have entered a negative number!!
In the above example, we have used the constant True as condition for while-loop, which will
never become False. So, there was a possibility of infinite loop. This has been avoided by
using break statement with a condition. The condition is kept inside the loop such a way that,
if the user input is a negative number, the loop terminates. This indicates that, the loop may
RNSIT 2
Python Application Programming (Professional Elective – 18EC646)
terminate with just one iteration (if user gives negative number for the very first time) or it may
take thousands of iteration (if user keeps on giving only positive numbers as input). Hence, the
number of iterations here is unpredictable. But, we are making sure that it will not be an
infinite-loop, instead, the user has control on the loop.
Sometimes, programmer would like to move to next iteration by skipping few statements in the
loop, based on some condition. For this purpose continue statement is used. For example, we
would like to find the sum of 5 even numbers taken as input from the keyboard. The logic is
–
Read a number from the keyboard
If that number is odd, without doing anything else, just move to next iteration
for reading another number
If the number is even, add it to sum and increment the accumulator variable.
When accumulator crosses 5, stop the program
sum=0
count=0
while True:
x=int(input("Enter a number:"))
if x%2 !=0:
continue
else:
sum+=x
count+=
1
if count==5:
break
output
Enter a number:13
Enter a number:12
Enter a number:4
Enter a number:5
Enter a number:-3
Enter a number:8
Enter a number:7
Enter a number:16
Enter a number:6
RNSIT 3
Python Application Programming (Professional Elective – 18EC646)
is called as a definite loop. The for-loop iterates over a set of numbers, a set of words, lines in
a file etc. The syntax of for-loop would be
statements_after_for
Here, for and in are keywords:
list/sequence is a set of elements on which loop is iterated. That is the loop
will be executed till there is an element in the list/sequence
constitutes body of loop.
statements constitutes body of the loop
Ex: In the below given example, a list names containing three strings has been created. Then
the counter variable x in the for-loop iterates over this list. The variable x takes the elements in
names one by one and the body of the loop is executed
names=[“Ram”, “Shyam”,”Bheem”]
for x in names:
Print(x)
Output:
Ram
Shyam
Bheem
NOTE: In Python, list is an important data type. It can take a sequence of elements of
different types. It can take values as a comma separated sequence enclosed within square
brackets. Elements in the list can be extracted using index (just similar to extracting array
elements in C/C++ language). Various operations like indexing, slicing, merging, addition and
deletion of elements etc. can be applied on lists. The details discussion on Lists will be done in
Module 3.
The for loop can be used to print (or extract) all the characters in a string as shown below –
for i in “Hello”
print(i,end=’\t’)
output:
H e l l o
When we have a fixed set of numbers to iterate in a for loop, we can use a function
range(). The function range() takes the following format –
RNSIT 4
Python Application Programming (Professional Elective – 18EC646)
The start and end indicates starting and ending values in the sequence, where end is
excluded in the sequence (That is, sequence is up to end-1). The default value of start is 0. The
argument steps indicates the increment/decrement in the values of sequence with the default
value as 1. Hence, the argument steps is optional. Let us consider few examples on usage of
range() function.
output:
0 1 2 3 4 5
Here, 0 is the default starting value. The statement range(5)is same as range(0,5) and
range(0,5,1).
for i in range(5,0,-1)
print(i, end= ‘\t’)
output:
5 4 3 2 1
The function range(5,0,-1)indicates that the sequence of values are 5 to 0(excluded) in steps of
-1 (downwards).
for i in range(0,10,2):
print(i, end= ‘\t’)
Output:
0 2 4 6 8
RNSIT 5
Python Application Programming (Professional Elective – 18EC646)
The construction of these loop patterns are demonstrated in the following examples.
count = 0
for i in [4, -2, 41, 34, 25]:
count = count + 1
print(“Count:”, count)
Here, the variable count is initialized before the loop. Though the counter variable i is not being
used inside the body of the loop, it controls the number of iterations. The variable count is
incremented in every iteration, and at the end of the loop the total number of elements in the
list is stored in it.
One more loop similar to the above is finding the sum of elements in the list
total = 0
for x in [4, -2, 41, 34, 25]:
total = total + x
print(“Total:”, total)
Here, the variable total is called as accumulator because in every iteration, it accumulates the
sum of elements. In each iteration, this variable contains running total of values so far.
NOTE: In practice, both of the counting and summing loops are not necessary, because there
are built-in functions len() and sum() for the same tasks respectively.
Maximum and Minimum Loops: To find maximum element in the list, the following code
can be used –
big = None
print('Before Loop:', big)
for x in [12, 0, 21,-3]:
if big is None or x > big :
big = x
print('Iteration Variable:', x, 'Big:', big)
print('Biggest:', big)
Output:
Before Loop: None
Iteration Variable: 12 Big: 12
Iteration Variable: 0 Big: 12
Iteration Variable: 21 Big: 21
Iteration Variable: -3 Big: 21
Biggest: 21
RNSIT 6
Python Application Programming (Professional Elective – 18EC646)
Here, we initialize the variable big to None. It is a special constant indicating empty. Hence,
we cannot use relational operator == while comparing it with big. Instead, the is operator must
be used. In every iteration, the counter variable x is compared with previous value of big.
If x > big, then x is assigned to big.
Similarly, one can have a loop for finding smallest of elements in the list as given below-
small = None
print('Before Loop:', small)
for x in [12, 0, 21,-3]:
if small is None or x < small :
small = x
print('Iteration Variable:', x, 'Small:', small)
print('Smallest:', small)
Output:
Before Loop: None
Iteration Variable: 12 Small: 12
Iteration Variable: 0 Small: 0
Iteration Variable: 21 Small: 0
Iteration Variable: -3 Small: -3
Smallest: -3
NOTE: In Python, there are built-in functions max() and min() to compute maximum and
minimum values among. Hence, the above two loops need not be written by the programmer
explicitly. The inbuilt function min() has the following code in Python.
def min(values):
smallest = None
for value in values:
if smallest is None or value < smallest:
smallest = value
return smallest
2.2 STRINGS
A string is a sequence of characters, enclosed either within a pair of single quotes or double
quotes. Each character of a string corresponds to an index number, starting with zero as shown
below.
st= “Hello World”
character H e l l o W o r l d
index 0 1 2 3 4 5 6 7 8 9 10
The characters of a string can be accessed using index enclosed within square brackets. For
example,
RNSIT 7
Python Application Programming (Professional Elective – 18EC646)
>>> word1="Hello"
>>> word2='hi'
>>> x=word1[1] #2nd character of word1 is extracted
>>> print(x)
e
>>> y=word2[0] #1st character of word1 is extracted
>>> print(y)
h
Python supports negative indexing of string starting from the end of the string as shown
Below
st= “Hello World”
character H e l l o W o r l d
The characters can be extracted using negative index also. For example
>>> var=“Hello”
>>> print(var[-1])
o
>>> print(var[-4])
e
Whenever the string is too big to remember last positive index, one can use negative index to
extract characters at the end of string.
RNSIT 8
Python Application Programming (Professional Elective – 18EC646)
st="Hello"
for i in st:
print(i, end='\t')
Output:
H e l l o
In the above example, the for loop is iterated from first to last character of the string st. That
is, in every iteration, the counter variable i takes the values as H, e, l, l and o. The loop
terminates when no character is left in st.
st="Hello"
i=0
while i<len(st):
print(st[i], end=‘\t’)
i+=1
Output:
H e l l o
In this example, the variable i is initialized to 0 and it is iterated till the length of the string.
In every iteration, the value of i is incremented by 1 and the character in a string is extracted
using i as index
This will extract character from ith character of st till (j-1)th character in steps of k. If first
index i is not present, it means that slice should start from the beginning of the string. If the
second index j is not mentioned, it indicates the slice should be till the end of the string. The
third parameter k, also known as stride, is used to indicate number of steps to be incremented
after extracting first character. The default value of stride is 1.
Consider following examples along with their outputs to understand string slicing.
St=”Hello World”
character H e l l o W o r l d #refer this string for
all examples
index 0 1 2 3 4 5 6 7 8 9 10
RNSIT 9
Python Application Programming (Professional Elective – 18EC646)
8. print(st[3:8:2]) #output is l o
Starting from 3rd character, till 7th character, every alternative index is considered.
RNSIT 10
Python Application Programming (Professional Elective – 18EC646)
By the above set of examples, one can understand the power of string slicing and of Python
script. The slicing is a powerful tool of Python which makes many task simple pertaining to
data types like strings, Lists, Tuple, Dictionary etc. (Other types will be discussed in later
Modules)
Here, we are trying to change the 4th character (index 3 means, 4th character as the first index
is 0) to t. The error message clearly states that an assignment of new item (a string) is not
possible on string object. So, to achieve our requirement, we can create a new string using
slices of existing string as below –
>>> st= “Hello World”
>>> st1= st[:3]+ 't' + st[4:]
>>> print(st1)
Helto World #l is replaced by t in new string st1
RNSIT 11
Python Application Programming (Professional Elective – 18EC646)
def countChar(st,ch):
count=0
for i in st:
if i==ch:
count+=1
return count
st=input("Enter a string:")
ch=input("Enter a character to be counted:")
c=countChar(st,ch)
print("{0} appeared {1} times in {2}".format(ch,c,st))
Sample Output:
Enter a string: hello how are you?
Enter a character to be counted: h
h appeared 2 times in hello how are you?
Ex2:
st= “hello”
if st<= ‘Hello’: output
print(‘lesser’) greate
else: r
print(‘greater’)
Output is greater. The ASCII value of h is greater than ASCII value of H. Hence, hello
is greater than Hello.
NOTE: A programmer must know ASCII values of some of the basic characters. Here are
few –
RNSIT 12
Python Application Programming (Professional Elective – 18EC646)
A – Z : 65 – 90
a – z : 97 – 122
0 – 9 : 48 – 57
Space : 32
Enter Key : 13
The built-in set of members of any class can be accessed using the dot operator as shown–
objName.memberMethod(arguments)
The dot operator always binds the member name with the respective object name. This is very
essential because, there is a chance that more than one class has members with same name. To
avoid that conflict, almost all Object oriented languages have been designed with his common
syntax of using dot operator. (Detailed discussion on classes and objects will be done in later
Modules.)
Python provides a function (or method) dir to list all the variables and methods of a
particular class object. Observe the following statements –
[' add ', ' class ', ' contains ', ' delattr ', '
dir ', ' doc ', ' eq ', ' format ', ' ge ', '
getattribute ', ' getitem ', ' getnewargs ', ' gt ', '
hash ', ' init ', ' init_subclass ', ' iter ', ' le
', ' len ', ' lt ', ' mod ', ' mul ', ' ne ', ' new
', ' reduce ', ' reduce_ex ', ' repr ', ' rmod ',
' rmul ', ' setattr ', ' sizeof ', ' str ', ' subclasshook
', 'capitalize', 'casefold', 'center', 'count', 'encode',
'endswith', 'expandtabs', 'find', 'format', 'format_map',
'index', 'isalnum', 'isalpha', 'isdecimal', 'isdigit',
'isidentifier', 'islower', 'isnumeric', 'isprintable',
'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower',
'lstrip', 'maketrans', 'partition',
'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit',
'rstrip', 'split', 'splitlines', 'startswith', 'strip',
'swapcase', 'title', 'translate', 'upper', 'zfill']
RNSIT 13
Python Application Programming (Professional Elective – 18EC646)
>>> help(str.islower)
Help on method_descriptor:
islower(...)
S.islower() -> bool
The methods are usually called using the object name. This is known as method invocation.
We say that a method is invoked using an object.
1. capitalize(s) : This function takes one string argument s and returns a capitalized
version of that string. That is, the first character of s is converted to upper case, and all
other characters to lowercase. Observe the examples given below –
RNSIT 14
Python Application Programming (Professional Elective – 18EC646)
>>> st='HELLO'
>>> st1=st.lower()
>>> print(st1)
hello
>>> print(st) #no change in original
string
HELLO
4. s.find(s1) : The find() function is used to search for a substring s1 in the string
s. If found, the index position of first occurrence of s1 in s, is returned. If s1 is not found
in s, then -1 is returned.
>>> st='hello'
>>> i=st.find('l')
>>> print(i) #output is 2
>>> i=st.find('lo')
>>> print(i) #output is 3
>>> print(st.find(‘x’)) #output is -1
The find() function can take one more form with two additional arguments viz.
start and end positions for search.
>>> i=st.find('cal',10,20)
>>> print(i) #output is 17
Here, the substring cal is searched in the string st between 10th and 20th position
and hence the result is 17.
>>> i=st.find('cal',10,15)
>>> print(i) #ouput is -1
In this example, the substring 'cal' has not appeared between 10th and 15th character
of st. Hence, the result is -1.
RNSIT 15
Python Application Programming (Professional Elective – 18EC646)
5. s.strip(): Returns a copy of string s by removing leading and trailing white spaces.
The strip() function can be used with an argument chars, so that specified chars are
removed from beginning or ending of s as shown below
>>> st="###Hello##"
>>> st1=st.strip('#')
>>> print(st1) #all hash symbols are removed
Hello
We can give more than one character for removal as shown below
When start argument is provided, the search begins from that position and returns
True or False based on search result.
When both start and end arguments are given, search begins at start and ends at end.
The startswith( ) function requires case of the alphabet to match. So, when we
are not sure about the case of the argument, we can convert it to either upper case or
lowercase and then use startswith( ) function as below –
>>> st="Hello"
>>> st.startswith("he") #returns False
>>> st.lower().startswith("he") #returns True
RNSIT 16
Python Application Programming (Professional Elective – 18EC646)
8. Isdigit(): method returns True if all the characters are digits, otherwise False.
txt = "50800"
x = txt.isdigit()
print(x) # output returns True
9. title(): method returns a string where the first character in every word is upper
case. Like a header, or a title.
10. center(): method will center align the string, using a specified character (space is
default) as the fill character.
txt = "banana"
x = txt.center(20)
print(x) # banana
There are many more built-in methods for string class. Students are advised to explore
more for further study
Consider a string below and we are interested in extracting only the domain name.
• Now, our aim is to extract only gmail.com, which is the domain name. We can think of
logic as–
Identify the position of @, because all domain names in email IDs will be after
the symbol @
RNSIT 17
Python Application Programming (Professional Elective – 18EC646)
Identify a white space which appears after @ symbol, because that will be the
end of domain name.
Extract the substring between @ and white-space
The concept of string slicing and find() function will be useful here. Consider the code given
below.
>>> atpos=s.find('@')
>>> print(atpos)
16
>>> spos=s.find(' ',atpos)
>>> print(spos)
26
>>> host=data[atpos+1:spos] #slicing from @ till white-space
>>> print(host)
>>> sum=20
>>> '%d' %sum
‘20’ #string ‘20’, but not integer 20
Note that, when applied on both integer operands, the % symbol acts as a modulus operator.
When the first operand is a string, then it is a format operator. Consider few examples
illustrating usage of format operator.
RNSIT 18
Python Application Programming (Professional Elective – 18EC646)
2.3 Files
File handling is an important requirement of any programming language, as it allows us to store
the data permanently on the secondary storage and read the data from a permanent source.
Here, we will discuss how to perform various operations on files using the programming
language Python.
2.3.1 Persistence
The programs that we have considered till now are based on console I/O. That is, the input was
taken from the keyboard and output was displayed onto the monitor. When the data to be read
from the keyboard is very large, console input becomes a laborious job. Also, the output or
result of the program has to be used for some other purpose later, it has to be stored
permanently. Hence, reading/writing from/to files are very essential requirement of
programming.
We know that the programs stored in the hard disk are brought into main memory to execute
them. These programs generally communicate with CPU using conditional execution, iteration,
functions etc. But, the content of main memory will be erased when we turn-off our computer.
We have discussed these concepts in Module1 with the help of Figure 2.1. Here we will discuss
about working with secondary memory or files. The files stored on the secondary memory are
permanent and can be transferred to other machines using pen-drives/CD.
Here,
filename is name of the file to be opened. This string may be just a name of the file, or
it may include pathname also. Pathname of the file is optional when the file is
stored in current working directory
mode This string indicates the purpose of opening a file. It takes a predefined set of
values as given in Table 2.1
fhand It is a reference to an object of file class, which acts as a handler or tool for all
further operations on files.
When our Python program makes a request to open a specific file in a particular mode, then
OS will try to serve the request. When a file gets opened successfully, then a file object is
returned. This is known as file handle and is as shown in Figure 2.1. It will help to perform
various operations on a file through our program. If the file cannot be opened due to some
reason, then error message (traceback) will be displayed.
RNSIT 19
Python Application Programming (Professional Elective – 18EC646)
Since, there is no guarantee about getting a file handle from OS when we try to open a file, it
is always better to write the code for file opening using try-except block. This will help us to
manage error situation.
NOTE: There is one more type of file called binary file, which contains the data in the form of
bits. These files are capable of storing text, image, video, audio etc. All these data will be stored
in the form of a group of bytes whose formatting will be known. The supporting program can
RNSIT 20
Python Application Programming (Professional Elective – 18EC646)
interpret these files properly, whereas when opened using normal text editor, they look like
messy, unreadable set of characters.
NOTE: Before executing the below given program, create a text file (using Notepad or similar
editor) myfile.txt in the current working directory (The directory where you are going store
your Python program). Open this text file and add few random lines to it and then close. Now,
open a Python script file, say countLines.py and save it in the same directory as that of your
text file myfile.txt. Then, type the following code in Python script countLines.py and execute
the program. (You can store text file and Python script file in different directories. But, if you
do so, you have to mention complete path of text file in the open() function.)
fhand=open('myfile.txt','r')
count =0
for line in fhand:
count+=1
print("Line Number ",count, ":", line)
print("Total lines=",count)
fhand.close()
output:
Line Number 1 : hello how are you?
Line Number 2 : I am doing fine
Line Number 3 : what about you?
Total lines= 3
In the above program, initially, we will try to open the file 'myfile.txt. As we have already
created that file, the file handler will be returned and the object reference to this file will be
stored in fhand. Then, in the for-loop, we are using fhand as if it is a sequence of lines. For
each line in the file, we are counting it and printing the line. In fact, a line is identified internally
with the help of new-line character present at the end of each line.
Though we have not typed \n anywhere in the file myfile.txt, after each line, we would have
pressed enter-key. This act will insert a \n, which is invisible when we view the file through
notepad. Once all lines are over, fhand will reach end-of-file and hence terminates the loop.
Note that, when end of file is reached (that is, no more characters are present in the file), then
an attempt to read will return None or empty character ‘’ (two quotes without space in
between).
RNSIT 21
Python Application Programming (Professional Elective – 18EC646)
Once the operations on a file is completed, it is a practice to close the file using a function
close(). Closing of a file ensures that no unwanted operations are done on a file handler.
Moreover, when a file was opened for writing or appending, closure of a file ensures that the
last bit of data has been uploaded properly into a file and the end-of-file is maintained properly.
If the file handler variable (in the above example, fhand ) is used to assign some other file
object (using open() function), then Python closes the previous file automatically.
If you run the above program and check the output, there will be a gap of two lines between
each of the output lines. This is because, the new-line character \n is also a part of the variable
line in the loop, and the print() function has default behavior of adding a line at the end (due
to default setting of end parameter of print()). To avoid this double-line spacing, we can
remove the new-line character attached at the end of variable line by using built-in string
function rstrip() as below.
It is obvious from the logic of above program that from a file, each line is read one at a time,
processed and discarded. Hence, there will not be a shortage of main memory even though we
are reading a very large file. But, when we are sure that the size of our file is quite small, then
we can use read() function to read the file contents. This function will read entire file content
as a single string. Then, required operations can be done on this string using built-in string
functions. Consider the below given example—
fhand=open('myfile.txt')
s=fhand.read()
print(“Total number of characters:”,len(s))
print(“String up to 20 characters:”, s[:20])
After executing above program using previously created file myfile.txt, then the output
would be—
Total number of characters:50
String up to 20 characters: hello how are you?
I
>>> fhand=open(“mynewfile.txt","w")
>>> print(fhand)
<_io.TextIOWrapper name='mynewfile.txt' mode='w' encoding='utf-8'>
If the file specified already exists, then the old contents will be erased and it will be ready to
write new data into it. If the file does not exists, then a new file with the given name will be
created.
The write() method is used to write data into a file. This method returns number of characters
successfully written into a file. For example,
>>> s="hello how are you?"
>>> fhand.write(s)
18
RNSIT 22
Python Application Programming (Professional Elective – 18EC646)
Now, the file object keeps track of its position in a file. Hence, if we write one more line into
the file, it will be added at the end of previous line. Here is a complete program to write few
lines into a file
fhand=open('f1.txt','w')
for i in range(5):
line=input("Enter a line: ")
fhand.write(line+"\n")
fhand.close()
The above program will ask the user to enter 5 lines in a loop. After every line has been entered,
it will be written into a file. Note that, as write() method doesn’t add a new-line character
by its own, we need to write it explicitly at the end of every line. Once the loop gets over, the
program terminates. Now, we need to check the file f1.txt on the disk (in the same directory
where the above Python code is stored) to find our input lines that have been written into it.
fhand=open('myfile.txt')
for line in fhand:
if line.startswith('h'):
print(line)
fhand.close()
RNSIT 23
Python Application Programming (Professional Elective – 18EC646)
fhand.close()
In this program, the user input filename is received through variable fname, and the same has
been used as an argument to open() method. Now, if the user input is myfile.txt
(discussed before), then the result would be.
Total lines=3
Everything goes well, if the user gives a proper file name as input. But, what if the input
filename cannot be opened (Due to some reason like – file doesn’t exists, file permission denied
etc)? Obviously, Python throws an error. The programmer need to handle such runtime errors
as discussed in the next section.
count =0
for line in fhand:
count+=1
print("Line Number ",count, ":", line)
print("Total lines=",count)
fhand.close()
In the above program, the command to open a file is kept within try block. If the specified file
cannot be opened due to any reason, then an error message is displayed saying File cannot be
opened, and the program is terminated. If the file could able to open successfully, then we will
proceed further to perform required task using that file.
2.3.9 Debugging
While performing operations on files, we may need to extract required set of lines or words or
characters. For that purpose, we may use string functions with appropriate delimiters that may
exist between the words/lines of a file. But, usually, the invisible characters like white space,
tabs and new-line characters are confusing and it is hard to identify them properly. For example,
>>> s="1 2\t 3\n 4"
>>> print(s)
1 2 3
4
Here, by looking at the output, it may be difficult to make out where there is a space, where is
a tab etc. Python provides a utility function called as repr() to solve this problem. This
method takes any object as an argument and returns a string representation of that object. For
example, the print() in the above code snippet can be modified as –
RNSIT 24
Python Application Programming (Professional Elective – 18EC646)
>>> print(repr(s))
'1 2\t 3\n 4'
Note that, some of the systems use \n as new-line character, and few others may use \r (carriage
return) as a new-line character. The repr() method helps in identifying that too.
RNSIT 25