Python Input Methods for Competitive Programming
Last Updated :
28 Nov, 2023
Python is an amazingly user-friendly language with the only flaw of being slow. In comparison to C, C++, and Java, it is quite slower. In online coding platforms, if the C/C++ limit provided is x. Usually, in Java time provided is 2x, and in Python, it’s 5x. To improve the speed of code execution for input/output intensive problems, languages have various input and output procedures. In this article, we are going to see various Python input methods for competitive programming.
Example Problem
Consider a question of finding the sum of N numbers inputted from the user.
Input a number N.
Input N numbers are separated by a single space in a line.
Example
Input:
5
1 2 3 4 5
Output:
15
Input Methods for Competitive Programming in Python
Below are the methods by which we can take faster input in Python:
- Normal Method
- Faster Method using Inbuilt Function
- Taking User Input Given in a Single Line in Separate Variables
- Taking User Inputs of List of Integers
- Taking String Input from the User
- Adding a buffered pipe io (Python 2.7)
Normal Method Python (Python 2.7)
- raw_input() takes an optional prompt argument. It also strips the trailing newline character from the string it returns.
- print is just a thin wrapper that formats the inputs (space between args and newline at the end) and calls the write function of a given object.
Python3
n = int ( input ())
arr = [ int (x) for x in input ().split()]
summation = 0
for x in arr:
summation + = x
print (summation)
|
Faster Method Using Inbuilt stdin, stdout (Python 2.7)
- sys.stdin on the other hand is a File Object. It is like creating any other file object one could create to read input from the file. In this case, the file will be a standard input buffer.
- stdout.write(‘D\n’) is faster than print ‘D’.
- Even faster is to write all once by stdout.write(“”.join(list-comprehension)) but this makes memory usage dependent on the size of the input.
Python3
from sys import stdin, stdout
def main():
n = stdin.readline()
arr = [ int (x) for x in stdin.readline().split()]
summation = 0
for x in arr:
summation + = x
stdout.write( str (summation))
if __name__ = = "__main__" :
main()
|
Difference in Time
Timing summary (100k lines each)
——————————–
Print : 6.040 s
Write to file : 0.122 s
Print with Stdout : 0.121 s
As we have seen till now that taking input from the standard system and giving output to the standard system is always a good idea to improve the efficiency of the code which is always a need in Competitive programming. But wait! would you like to write these long lines every time when you need them? Then, what’s the benefit of using Python.
Let’s discuss the solution to this problem. What we can do is let’s create separate functions for taking inputs of various types and just call them whenever you need them.
Taking User Input Given in a Single Line in Separate Variables
Suppose the input is of the following form
5 7 19 20
We want separate variables to reference them. What we want is given below
a = 5
b = 7
c = 19
d = 20
To do this, we can create a function named as get_ints() as given below in the code
Python3
import sys
def get_ints(): return map ( int , sys.stdin.readline().strip().split())
a,b,c,d = get_ints()
|
Now we don’t need to write this line again and again. You just have to call the get_ints() function in order to take input in this form. In the function get_ints we are using the map function.
Taking User Inputs of List of Integers
Suppose the input is of the following form
1 2 3 4 5 6 7 8
Now, we want that a single variable will hold the whole list of integers. What we want is given below.
Arr = [1, 2, 3, 4, 5, 6, 7, 8]
Here we will create a function named get_list() as given below.
Python3
import sys
def get_ints(): return list ( map ( int , sys.stdin.readline().strip().split()))
Arr = get_ints()
|
Now you don’t have to write this line again and again. You just have to call the get_ints() function in order to take input in this form
Taking String Input from the User
Suppose the input is of the following form
GeeksforGeeks is the best platform to practice Coding.
Now, we want that a single reference variable will hold this string. What we want is given below
string = "GeeksforGeeks if the best platform to practice coding."
Here we will create a function named get_string() as given below in the code.
Python3
import sys
def get_string(): return sys.stdin.readline().strip()
string = get_string()
|
Now you don’t have to write this line again and again. You just have to call the get_string() function in order to take input in this form
Adding a buffered pipe io (Python 2.7)
- Simply, adding the buffered IO code before your submission code to make the output faster.
- The benefit of io.BytesIO objects is that they implement a common interface (commonly known as a ‘file-like’ object). BytesIO objects have an internal pointer and for every call to read(n) the pointer advances.
- The atexit module provides a simple interface to register functions to be called when a program closes down normally. The sys module also provides a hook, sys.exitfunc, but only one function can be registered there. The atexit registry can be used by multiple modules and libraries simultaneously.
Python3
import atexit, io, sys
buffer = io.BytesIO()
sys.stdout = buffer
@atexit .register
def write():
sys.stdout.write( buffer .getvalue())
n = int ( input ())
arr = [ int (x) for x in input ().split()]
summation = 0
for x in arr:
summation + = x
print (summation)
|
Summary
While handling a large amount of data usually, the normal method fails to execute within the time limit. Method 2 helps in maintaining a large amount of I/O data. Method 3 is the fastest. Usually, handling of input data files greater than 2 or 3 MBs is helped via methods 2 and 3.
Note: above mention codes are in Python 2.7, to use in Python 3.X versions. Simply replace the raw_input() with Python 3.X’s input() syntax. Rest should work fine.
References
Similar Reads
Python Tutorial | Learn Python Programming Language
Python Tutorial â Python is one of the most popular programming languages. Itâs simple to use, packed with features and supported by a wide range of libraries and frameworks. Its clean syntax makes it beginner-friendly. Python is: A high-level language, used in web development, data science, automat
10 min read
Input and Output in Python
Understanding input and output operations is fundamental to Python programming. With the print() function, we can display output in various formats, while the input() function enables interaction with users by gathering input during program execution. Taking input in PythonPython input() function is
8 min read
Python basic I/O Techniques
Taking input in Python
Developers often have a need to interact with users, either to get data or to provide some sort of result. Most programs today use a dialog box as a way of asking the user to provide some type of input. While Python provides us with two inbuilt functions to read the input from the keyboard. input ()
3 min read
Python input() Function
Python input() function is used to take user input. By default, it returns the user input in form of a string. input() Function Syntax: input(prompt)prompt [optional]: any string value to display as input message Ex: input("What is your name? ") Returns: Return a string value as input by the user.
4 min read
Taking input from console in Python
What is Console in Python? Console (also called Shell) is basically a command line interpreter that takes input from the user i.e one command at a time and interprets it. If it is error free then it runs the command and gives required output otherwise shows the error message. A Python Console looks
2 min read
Python - Print Output using print() function
Python print() function prints the message to the screen or any other standard output device. In this article, we will cover about print() function in Python as well as it's various operations. [GFGTABS] Python # print() function example print("GeeksforGeeks") a = [1, 2, 'gfg'] pri
4 min read
Python - Output Formatting
In Python, output formatting refers to the way data is presented when printed or logged. Proper formatting makes information more understandable and actionable. Python provides several ways to format strings effectively, ranging from old-style formatting to the newer f-string approach. Formatting Ou
6 min read
Different Input and Output Techniques in Python3
An article describing basic Input and output techniques that we use while coding in python. Input Techniques 1. Taking input using input() function -> this function by default takes string as input. Example: C/C++ Code #For string str = input() # For integers n = int(input()) # For floating or de
3 min read