以下提供三種三整數排序輸出供參考。
請自行追蹤變數內容。
以下針對 a、b、c 內容值由小而大輸出。
【不改變變數內容之輸出】
if( (a<=b) && (a<=c) && (b<=c) ):
print(a, b, c)
if( (a<=b) && (a<=c) && (c<=b) ):
print(a, c, b)
if( (b<=a) && (b<=c) && (a<=c) ):
print(b, a, c)
if( (b<=a) && (b<=c) && (c<=a) ):
print(b, c, a)
if( (c<=b) && (c<=a) && (a<=b) ):
print(c, a, b)
if( (c<=b) && (c<=a) && (b<=a) ):
print(c, b, a)
註:上式若將所有 <= 改成 < ,則有 bug,試問,在何種情況 bug 會發生?
【改變變數內容之輸出】
if(a>b):
t=a
a=b
b=t
if(a>c):
t=a
a=c
c=t
if(b>c):
t=b
b=c
c=t
print(a,b,c)
python 在兩數的交換提供了另一種方式如下:
a,b = b,a
這行敘述可以取代
t=a
a=b
b=t
因此上式可寫成:
if(a>b):
a,b = b,a
if(a>c):
a,c = c,a
if(b>c):
b,c = c,a
print(a,b,c)
【使用列表排序】
列表提供了 sort() 方法,內定由小而大排序,若要由大而小則要指定參數 sort(reverse = True)
x = [a,b,c]
x.sort()
[a,b,c] = x
【使用 sorted() 函數排序】
python 內建 sorted() 排序方法,內定由小而大排序,若要由大而小則要指定參數 sorted( 排序元素 ,reverse = True)
[a,b,c] = sorted([a,b,c]) #一道指令搞定三數排序
print(a,b,c)