我做了一個從串列中獲取最小值的函式,但它不能正常作業并回傳錯誤的值。它列印出 5。它有什么問題?
def finding_least_num(a_list):
first = 0
for i in a_list:
while first < len(a_list)-1:
if i < a_list[first]:
min_num = a_list[first]
first = first 1
first = 0
print(min_num)
finding_least_num([3,7,5,2,9])
uj5u.com熱心網友回復:
我不確定為什么有很多內部 if 和 while 陳述句。@Swishy 已正確診斷出您堅持的問題。如果你堅持不使用min函式,你可以試試下面的代碼:
def finding_least_num(a_list):
first = float('inf')
for value in a_list:
if value < first:
first = value
return first
這導致在用作函式輸入2的情況下。[3,7,5,2,9]
請注意,這float("inf")是指 python 中可用的最大數量。
uj5u.com熱心網友回復:
if i < a_list[first]:
這是你的問題,這需要:
if min_num > a_list[first]
它不起作用,因為您沒有檢查已保存在 min_num 中的最低數字。您還需要初始化min_num到陣列中的第一條記錄。
uj5u.com熱心網友回復:
def finding_least_num(a_list):
first = 0
for i in a_list:
print("testing i = ", i)
while first < len(a_list)-1:
print("first = ", first)
if i < a_list[first]:
print ("checking if i < ", a_list[first])
print("i", i)
min_num = a_list[first]
print("minimum number here is ", min_num)
first = first 1
first = 0
print(min_num)
finding_least_num([3,7,5,2,9])
我用注釋重寫了您的代碼并運行它。將此復制到您的解釋器中,您將看到錯誤以及每次收到 5 的原因。您將意識到您的第一個 for 回圈獲取您傳遞給函式的陣列的第一個索引,并針對第二個 while 回圈(我們稱之為選擇索引)對其進行測驗。對于每個回圈,測驗選定的索引是否小于選定的索引。如果為 true,則將最小數字設定為所選索引。如果您測驗我在那里列印的新代碼,您會發現記錄的最后一個最小數字是兩個回圈完成后回傳的數字。Python 有許多方法可以在這些情況下提供幫助。例如min()是簡化事情的好方法。另一個好方法是sorted()陣列并根據排序順序回傳第一個或最后一個索引。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/429389.html
