def part3 (x):
for i in range (len(x)):
while i <= len(x):
print (x[i])
return x[i+1]
x=[5,2,3]
x.sort()
print(x[0],x[1], x[2])
print(part3(x))
輸出:
2 3 5
2
3
我的問題:爲什麼我沒有拿到5後3?!?!不應該功能去x [2]?!?!
def part3 (x):
for i in range (len(x)):
while i <= len(x):
print (x[i])
return x[i+1]
x=[5,2,3]
x.sort()
print(x[0],x[1], x[2])
print(part3(x))
輸出:
2 3 5
2
3
我的問題:爲什麼我沒有拿到5後3?!?!不應該功能去x [2]?!?!
功能是在你的循環(一個或多個)的第一次迭代返回,因爲你有一個return
聲明那裏。所以,當你有
print(part3(x))
首先print(x[i])
(其中i = 0
因爲這是第一次迭代)完全是你while
-loop執行,那麼函數(x[i+1]
)的返回值是由原始打印語句上面印着。
你打電話x.sort()
後,x
會[2, 3, 4]
,所以x[0]
是2
和x[0+1] = x[1]
是3
,這說明你的輸出。
不能確定你想使用此代碼實現,所以很難給你建議如何解決它的。如果你只是想打印的x
的內容,然後你讓waayy複雜得多,它必須是,你可以簡單地做
for i in x:
print(i)
請注意,您不需要這裏有一個return語句,所以你不需要多餘的print
;即
print(part3(x))
只想成爲
part3(x)
,因爲你是做印刷的功能本身。
你正在做錯誤的循環。我認爲這一點是打印x
的每個元素。
你想:
def part3(x):
for element in x:
print(element)
現在請注意:
哇我覺得啞巴。謝謝:) – user1730110
你可以看到「2」內打印的結果,你看到的「3」爲打印「返回X [I + 1]」的結果,你沒有看到「5」 bcoz你離開你的while循環和一個函數。
如果所有你需要的是打印所有這些值並返回最後一個你可以試試這個:
def part3 (x):
for val in x:
print val
return x[-1]
,如果你需要知道的索引,那麼你可以嘗試枚舉:
def part3 (x):
for i, val in enumerate(x):
print i, val
return x[-1]
你不會在while循環中增加你的'i' – inspectorG4dget
這段代碼真的很奇怪。你爲什麼要循環訪問這些值,然後使用這些值作爲索引? –
對不起,修正了它。 – user1730110