Question: Python Print Function [Introduction]
The included code stub will read an integer, n, from STDIN.
Without using any string methods, try to print the following:
123...n
Note that "...
" represents the consecutive values in between.
Example:
n = 5
print string 12345
Input Format:
The first line contains an integer n.
Constraints:
1<=n<=150
Output Format
Print the list of integers from 1
through n as a string, without spaces
Sample input:
3
Sample output:
123
Possible solutions
This problem is very simple as we just have to print the string based on the input value. The following code is already given in the editor of the hacker rank:
if __name__ == '__main__':
n = int(input())
Now, let us solve the problem using the following methods:
Solution-1: Using for loop
Now let us use the for loop to print the string in range of the input value:
if __name__ == '__main__':
n = int(input())
for i in range(1, n+1):
print(i, end='')
This code snippet is checking to see if the current script being run is the main program (as opposed to being imported as a module into another script). If it is the main program, it then takes input from the user in the form of an integer, assigns it to the variable "n
", and then uses a for loop to iterate over a range of numbers from 1
to n+1
. Within the loop, it then prints the current iteration number, with the "end
" parameter set to an empty string, which means that each number will be printed on the same line, rather than on a new line.
Solution-2: Using list comprehension
Now let us shorten the code and print the list using one line of code:
if __name__ == '__main__':
n = int(input())
print(*[i for i in range(1,n+1)],sep="")
This code snippet is similar to the previous one, but it uses a more concise approach to achieve the same result. It's checking to see if the current script being run is the main program and then takes input from the user in the form of an integer and assigns it to the variable "n
". Instead of using a for loop, it's using a list comprehension to generate a list of numbers from 1
to n+1
and then using the "*
" operator to unpack the list and print all the elements as individual arguments to the print
function. And it is using the sep
parameter to set the separator between the numbers as an empty string. This way it will print all the numbers in a single line, just like the previous code snippet.
Solution-3: Using map() function
We can also solve the problem using map() function:
if __name__ == '__main__':
n = int(input())
print("".join(map(str,range(1,n+1))))
This code snippet is similar to the previous one, it's checking to see if the current script being run is the main program and then takes input from the user in the form of an integer and assigns it to the variable "n
". Instead of using a list comprehension, it's using the range()
function to generate a sequence of numbers from 1
to n+1
and passing it to the map()
function which applies the str()
function to each element of the sequence. The str()
function converts each element of the sequence to a string. Then it uses the join()
function to concatenate all the elements of the sequence into a single string. Finally, it's printing the result of the join()
function. This way it will print all the numbers in a single line, just like the previous code snippets.
Solution-4: Using a while loop
Now let us use the while loop to solve the problem:
if __name__ == '__main__':
n = int(input())
i = 1
while(i <= n):
print(i,end='')
i+=1
This code snippet is similar to the previous one, it's checking to see if the current script being run is the main program and then takes input from the user in the form of an integer and assigns it to the variable "n
". Instead of using a for loop, it's using a while loop which will iterate until a certain condition is met. In this case, it's using a while loop to iterate while the value of the variable i
is less than or equal to n
. Within the loop, it then prints the current value of i, with the "end
" parameter set to an empty string, which means that each number will be printed on the same line, rather than on a new line. Then it's incrementing the value of i by 1 after each iteration so that the loop can terminate when i
becomes greater than n
. This way it will print all the numbers in a single line, just like the previous code snippets.
Summary
In this short article, we discussed how to solve the print problem from hacker rank. We discussed four different methods to solve the problem.
Further reading
Question on Hacker Rank: Python Print Function [Introduction]