0

How to swap two or more numbers using if conditions in python?

Using if conditions only

25th Apr 2020, 2:11 AM
nagendratorati
nagendratorati - avatar
8 odpowiedzi
+ 2
[4:4] @brattham (2020-04-25) Actually Python helps us out here. Before Python starts it’s assignment process, it is saving its the initial values in its own temporary copy T of the tuple (b, a). That gives that T = (33, 10). So T will not be affected by the assignments process, although references to a and b will be changed under the assignment process. That is because to Python, the assignment looks more like this: Python knows that a = 10 and b = 33 So when we try to assign: a, b = b, a Python first starts to creates its own tuple: => T = (b, a) <=> T = (33, 10) So it’s ‘easy’ for Python to see that => (a, b) = T <=> (a, b) = (33, 10) And after the swap (it is true that): a == 33 and b == 10. So the conclusion is: a, b = b, a works fine for swapping the variables references to each other’s objects, and we can feel save doing so. Regards /Per B 🙂
25th Apr 2020, 6:30 PM
Per Bratthammar
Per Bratthammar - avatar
+ 3
Just swap them normally a, b = b, a Why must you use if conditions?
25th Apr 2020, 2:31 AM
Ore
Ore - avatar
+ 2
About swapping variables [1:4] @brattham (2020-04-25) First: If-statements and assignments have really nothing to do with each other, and can be used separately from each other. Now: Let a = 10; b = 33. Then a and b are two references to the two integer objects 10 and 33. So if you ‘swap’ a and b with each other, you swap a:s and b:s references to the to the place in the memory where the objects are. Before you can swap the two variables (a and b) references to the two objects (10 and 33), you first have to save of a copy of the information contained in one of the variables, for example a, in a temporary variable, for example t, before the value contained in b can be copied to a. Otherwise the reference to the original object (= 10), will be lost. We know that a = 10; b = 33. So to swap a and b:s references with each other, let: t = a; a = b; b =t => print(’a=’, a, ’ b=’, b) >> a= 33 b= 10 # Swapped! - - -
25th Apr 2020, 6:16 PM
Per Bratthammar
Per Bratthammar - avatar
+ 2
[2:4] @brattham (2020-04-25) Python allows tuple assignments. With tuple assignment, Python ’unpack’ the values to the right in the assignment expression and assign the values to the reference name inside the tuple to the left in a positional order. (a, b) = (10, 33) => a = 10; b = 33 A generalization of this is the sequential assignment, in which you can skip the parentheses: a, b = 10, 33 => a = 10; b = 33 Now when we have seen that sequential assignments is possible, the question is: can we swap the references at a and b so they pointing on each other’s objects, using sequences assignments. And: if so, is it possibility to do it without saving any values in some temporary variable? So once more, we let: a = 10; b = 33. Now we want to swap a and b so a = 33 and b = 10 (our goal). - - -
25th Apr 2020, 6:27 PM
Per Bratthammar
Per Bratthammar - avatar
+ 2
[3:4] @brattham (2020-04-25) So for a tuple, we want: (a, b) = (33, 10). But for the moment, a = 10 and b =33, so it would be nice if we could use our references who are pointing at the objects values and just write: (a, b)= (b, a), or even more simplified, using sequential assignment: a, b = b, a And the thing is: it actually works! But why? It first feels a bit risky at a first glance! When the assignments process starts, the value of a and b starts to change reference and begin to point at each other’s objects, so how does we know that it works? - - -
25th Apr 2020, 6:29 PM
Per Bratthammar
Per Bratthammar - avatar
+ 1
Wher is your try?
25th Apr 2020, 2:23 AM
Ayush Kumar
Ayush Kumar - avatar
+ 1
Per Bratthammar well , thanks
26th Apr 2020, 1:12 AM
nagendratorati
nagendratorati - avatar
0
Per Bratthammar iam beginer can u explain in more detail
25th Apr 2020, 4:44 AM
nagendratorati
nagendratorati - avatar