Commas in Python are used for things like function arguments and creating tuples and lists. If you notice the command-line output when running this
>>> print(a), print(b)
0.5
0.5
(None, None)
the (None, None) is the resulting tuple created from the output value of two print statements put together with a comma. None, None is the same as (None, None).
The printed 0.5 values are the so-called side-effect of the print statement. It is what ends up on your screen when printing -- but the return value of a print is actually None.
Also notice the effect of
>>> a=0.5, 0.6
>>> print(a)
(0.5, 0.6)
a is assigned both of the two values following the equal sign since there is a comma. And now we are getting closer to the solution, these two statements are identical:
a=0.5, b=0.5
a = (0.5, b) = 0.5
so Python attempts to assign the last 0.5 to the value of the previous statement, which it can't. Basically doing a literal assignment giving a syntax error:
>>> (0.6, 0.7) = 0.5
SyntaxError: can't assign to literal
a=0.5, b=0.5toa, b = 0.5, 0.5. As for the;, it marks the end of a statement. Soa=0.5;is one statement that is separate fromb=0.5.