我正在玩一個小程式,它應該找到數字的平均值和下面的串列,高于該串列中的平均數字。
num = input("Enter a number: ")
total = 0
count = 0
lst = []
below_ave = []
equal_ave = []
above_ave = []
while num != '':
n = int(num)
total = n
count = 1
lst.append(n)
num = input("Enter a number: ")
average = total // count
for i in range(0, len(lst)-1): # Here why it should be len(lst) instead of len(lst)-1
# I played around with it a bit, if i use len(lst)-1 then
# the last number in the list (lst) will not be displayed
# But as you can see i tried to see if i made a mistake by
# printing out each individual element of the list, lst[4]
# does print out the last number, but it does not show up
# in above_ave.
if lst[i] < average:
below_ave.append(lst[i])
elif lst[i] == average:
equal_ave.append(lst[i])
elif lst[i] > average:
above_ave.append(lst[i])
print(lst[0])
print(lst[1])
print(lst[2])
print(lst[3])
print(lst[4])
print(f"lentgh of the list is {len(lst)}")
print(average)
print(below_ave)
print(equal_ave)
print(above_ave)
output
Enter a number: 5
Enter a number: 8
Enter a number: 6
Enter a number: 12
Enter a number: 9
Enter a number:
5
8
6
12
9
lentgh of the list is 5
8
[5, 6]
[8]
[12]
Process finished with exit code 0
正如程式中所評論的那樣。我對串列中元素的索引感到困惑。第 0 個元素應該代表串列中的第一個元素,但是,程式的輸出并未顯示這一點。我以前遇到過這個問題,我忽略了它,但我認為我不應該。
那么什么時候應該在像我這樣的類似情況下使用 len(list)-1 和 len(list) 呢?我通常使用 len(list)-1 并且它可以作業,但有時它不喜歡在這段代碼中。
感謝幫助!
uj5u.com熱心網友回復:
我個人從來沒有len(lst) - 1在 python 中使用過,因為如果你看一下:
lst = [1, 2, 3, 4]
for i in range(len(lst)):
print(lst[i])
這里i迭代0, 1, 2, 3將回傳輸出為1, 2, 3, 4. 但是,如果你這樣做,len(lst) - 1那么你將不會得到串列中的最后一個元素,即你不會得到i as 3和output as 4. range()簡單地省略最后一個傳遞的整數。
例如:
for i in range(0, 10): # You can omit the starting 0 since it is default
print(i) # Output: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
如您所見,您不會得到10輸出,因為它range()傾向于省略最后一個值。
不推薦使用len(lst) - 1,但是如果您有與您的 lst 相關的預定義整數,則可以使用它們。
代碼改進:
在Line 11您檢查num != ''我是否建議檢查輸入是否為數字的位置。像這樣檢查:while not num.isdigit()
Theisdigit()是一個默認關鍵字,可幫助您檢查字串中的所有值是否都是整數。
在最后一行,不需要使用elif條件來檢查值是否大于平均值。您可以簡單地使用else,因為上述所有條件均未滿足,因此默認情況下滿足最后一個條件。
您還可以嘗試通過串列理解方法進行瀏覽
uj5u.com熱心網友回復:
您的串列的長度是 5,正確。
但是,您執行len(list) - 1回圈將少運行 1 次迭代,因此不會顯示存盤在串列末尾的最后一個元素,即 9。
您還使用以下命令列印了兩次平均值:
print(average)
print(equal_ave)
換句話說:這是你的串列[5,8,6,12,9]
和他們的位置分別
lst[0] = 5
lst[1] = 8
lst[2] = 6
lst[3] = 12
lst[4] = 9
如果您的回圈不回圈 5 次迭代,因為len(lst) = 5and len(lst) - 1 = 4,您的變數i只會回圈 4 次,即 0,1,2,3
因此不顯示串列中的元素9!
uj5u.com熱心網友回復:
len(list)當您要迭代串列中的每個元素時需要使用。
和,
len(list) - 1當您需要除了串列中的最后一個元素之外的每個元素時,您需要使用。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/527071.html
標籤:Python列表
下一篇:Python串列遞回而不是字串
