start = 5
for i in range(start):
if i == 0:
print('##')
else:
print('#',i*'o','#',sep='')
Output:
I am getting my Expected Output
##
#o#
#oo#
#ooo#
#oooo#
I am a Python Learner, would like to know if in what other way we can code better than above code, please suggest
The first print('##')
always happens only on the first iteration of the loop, the if statement has to check every time after that if i == 0:
.
The first print could be moved to before the loop and the loop change to start at 1 instead of 0, then if statement would no longer be required.
aankrose Wrote:would like to know if in what other way we can code better than above code
There is also
print("""\
##
#o#
#oo#
#ooo#
#oooo#""")
but I don't know if it is better. It all depends on what you want to do next.
There is no need for conditional. Else clause is with
i * 'o'
which means that first iteration with index 0 returns no 'o'-s.
>>> for i in range(5):
... print(f'#{i * "o"}#')
...
##
#o#
#oo#
#ooo#
#oooo#
My Favorite perfringo
Could you please explain me what print(f' accutally does ? i tried to find how it work , what i understand is , its kind of format , but i am now sure how print(f'#{i * "o"}#') work?
This is (new) string formatting called f-strings (formatted strings) available in 3.6 <= Python. You can read about it in
PEP 498 -- Literal String Interpolation.
Quote:F-strings provide a concise, readable way to include the value of Python expressions inside strings.