6.1. While: List of squares
"For a given integer N, print all the squares of positive integers where the square is less than or equal to N, in ascending order."
1 4 9 16 25 36 49
I think it's better to use a while loop here.
For example, if x is one million, the last number of the list will be one million, but you'll compute the square of each number from one to one million (so the last square will be one trillion).
x = int(input("Enter the number:")) i = 1 while i*i <= x: print(i*i) i += 1
@pole55 what I meant is that your script is computing too much stuff for its purpose. That's because range(1, x+1) is way too big, especially if x itself is big. If x=10^10, then you only really need to stop at 10^5, because the square of this number is 10^10.
Here is a modification of your own script:
from math import sqrt x = int(input("Enter the number: ")) print("All the squares in the given range are:") print([i**2 for i in range(1, int(sqrt(x))+1) if i**2 <= x])
Try your script with x = 10000000000 and try this new version. You'll see the difference.
@girianshiido, my code gives the same result
This file cannot be displayed: https://storage.googleapis.com/replit/images/1537369635000_7eccae89e39c716a1781be52cfbf5ef0.pn
This file cannot be displayed: https://storage.googleapis.com/replit/images/1537369635023_e9ae3400c2da4b4d9d39fc9cfdb47287.pn
@girianshiido the result does not depend on the value of the number. they are still identical. p.s.: I use here a million cause the computer hangs trying to work with 10000000000)). in both, my and yours, cases.
This file cannot be displayed: https://storage.googleapis.com/replit/images/1537371463115_eca8571f0390d14c2794c0e379821db1.pn
This file cannot be displayed: https://storage.googleapis.com/replit/images/1537371463102_945da99be1ffa0165f5437150465a0e5.pn