您好,登錄后才能下訂單哦!
Python練習實例
輸入三個整數x,y,z,請把這三個數由小到大輸出。
(出處:https://www.runoob.com/python/python-exercise-example5.html)
拿到這道題后,我就用最笨的方法把它寫了出來,并進行了優化。
'''
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)):????????????????????????? ? ?? ???? #建立兩個循環,讓數列中的數一個一個進行比較
??????? 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=' ')
'''
這里我就用到了循環語句(我把這個語句塊寫在了一個函數里,不用定義也可以,個人習慣)
一遍遍的循環使相鄰兩數相比較,將小的數字排在前面
這樣的循環呢,就又產生了另一種思路,也被稱為冒泡排序法
'''
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
'''
這時候只需要定義一個空列表,再引用函數就可以實現了
但這種方法還是不太好,當列表數字太多的時候,輸入的時候可能會輸入錯誤,并且這樣的話還要再去數一下一共有多少數字
這時候就可以在用另一個方式去輸入,輸入的時候用一個循環使使用者能看到自己輸入了第幾個數字,并無限循環
而當輸入QUIT時退出循環進行排序,這里我就不給出代碼了
最后,給出一個排序方法,這個排序方法對于以后來說效率更高,但對于初學者來說,自己編寫可以鍛煉思維
所以這個方法不推薦初學者使用
'''
list.sort()
'''
沒錯,非常簡短,這就是Python內置的函數,可以使我們開發效率更快,沒有必要再去冗長的編寫代碼了
到此,這節筆記就結束了
end
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。