Python Forum

Full Version: Better Coding request
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
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.