溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python菜鳥學習筆記:實戰(zhàn):數字排序

發(fā)布時間:2020-07-24 15:54:08 來源:網絡 閱讀:227 作者:wx5d3d4c8b49ab3 欄目:編程語言

Python練習實例

輸入三個整數x,y,z,請把這三個數由小到大輸出。
(出處:https://www.runoob.com/python/python-exercise-example5.html)


拿到這道題后,我就用最笨的方法把它寫了出來,并進行了優(yōu)化。


'''
x = int(input('請輸入一個整數X:'))
y = int(input('請輸入一個整數Y:'))
z = int(input('請輸入一個整數Z:'))
if x <= y:
??? if y <= z:
??????? print(x,y,z)
??? elif z <= y:
??????? if x <= z:
??????????? print(x,z,y)
??????? else:
??????????? print(z,x,y)
if x >= y:
??? if z <= y:
??????? print(z,y,x)
??? elif z >= y:
??????? if x <= z:
??????????? print(y,x,z)
??????? else:
??????????? print(y,z,x)

'''


但顯然,這種方法只是數字之間相比較,確實有點顯得low了


于是我就用了另一個辦法:建立一個列表用選擇排序法來處理


'''

x = int(input('請輸入一個數字X:'))
y = int(input('請輸入一個數字Y:'))
z = int(input('請輸入一個數字Z:'))
array = [x,y,z]???????????????????????????????????????????? ? ? ? ? ? ? ? ? #開頭輸入,定義一個列表

def bubble_sort():
??? for idx in range(len(array)):????????????????????????? ? ?? ???? #建立兩個循環(huán),讓數列中的數一個一個進行比較
??????? for j in range(idx+1,len(array)):?????????????????? ?
??????????? if array[idx] > array[j]:
??????????????? array[idx] , array[j] = array[j] , array[idx]??? #該處是讓數字交換,使小的數字往前走(冒泡)
??? return array??????????????????????????????????????????????????????????? #返回函數值

bubble_sort()??????????????????????????????????????????????????????? ? ?? #調用函數,使函數內部代碼運行一遍

for i in array:?????????????????????????????????????????????

#一個個打印出數列里的內容,此處也可以直接打印數列 print(array)或者打印函數 print(bubble_sort)
??? print(i, end=' ')

'''


這里我就用到了循環(huán)語句(我把這個語句塊寫在了一個函數里,不用定義也可以,個人習慣)


一遍遍的循環(huán)使相鄰兩數相比較,將小的數字排在前面


這樣的循環(huán)呢,就又產生了另一種思路,也被稱為冒泡排序法


'''
x = int(input('請輸入一個整數X:'))
y = int(input('請輸入一個整數Y:'))
z = int(input('請輸入一個整數Z:'))
array = [x,y,z]


def bubble_flag(list):
??? length = len(list)
??? for index in range(length):
??????? for i in range(1,length - index):
??????????? if list[i-1] > list[i]:
??????????????? list[i] , list[i-1] = list[i-1] , list[i]
??? return list


bubble_flag(array)


for i in array:
??? print(i,end=' ')

'''

這里大家就會看到了,其實與上面的代碼(選擇排序法)沒有什么不同,不過冒泡排序法是將大的數字往后放(我感覺叫沉底法還比較貼切)


寫到這里對于開頭的實例來說已經完成了任務,但我并不滿足




輸入數字改進


第一種方法運算量少但不可避免的有個弊端:如果有幾百甚至幾萬個數字呢?


顯然,它滿足不了了,所以我選擇后兩種方法重新進行了加工,我把前面的數字數量寫成了一個函數包


'''

def sort_input_MoreNumber(list):
??? array = list
??? number = int(input('請問您要輸入幾個數字:'))
??? for i in range(number):
??????? x = int(input('請輸入一個數字以加入要排序的數列: '))
??????? array.append(x)
??? return array

'''

這時候只需要定義一個空列表,再引用函數就可以實現了


但這種方法還是不太好,當列表數字太多的時候,輸入的時候可能會輸入錯誤,并且這樣的話還要再去數一下一共有多少數字


這時候就可以在用另一個方式去輸入,輸入的時候用一個循環(huán)使使用者能看到自己輸入了第幾個數字,并無限循環(huán)


而當輸入QUIT時退出循環(huán)進行排序,這里我就不給出代碼了


最后,給出一個排序方法,這個排序方法對于以后來說效率更高,但對于初學者來說,自己編寫可以鍛煉思維


所以這個方法不推薦初學者使用


'''

list.sort()

'''

沒錯,非常簡短,這就是Python內置的函數,可以使我們開發(fā)效率更快,沒有必要再去冗長的編寫代碼了


到此,這節(jié)筆記就結束了


end

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI