输入:
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
我的问题:为什么我不能在3之后得到5?!?!功能不应该转到x [2]?!?!
答案 0 :(得分:2)
函数在循环的第一次迭代时返回,因为那里有一个return
语句。所以,当你有
print(part3(x))
首先print(x[i])
(其中i = 0
,因为这是第一次迭代)在你的while
循环中执行,然后函数的返回值(x[i+1]
)是由上面的原始印刷声明印刷。
致电x.sort()
后,x
将为[2, 3, 4]
,因此x[0]
为2
且x[0+1] = x[1]
为3
,这解释了你的输出。
不确定您希望使用此代码实现的目标,因此很难就如何修复它提供建议。如果你只想打印x
的内容,那么你就会让它变得比以前更加复杂,因为你可以简单地做到这一点
for i in x:
print(i)
请注意,不需要在此处使用return语句,因此您不需要多余的print
;即。
print(part3(x))
将成为
part3(x)
因为你在函数本身进行打印。
答案 1 :(得分:1)
你做错了。我认为重点是打印x
的每个元素。
你想:
def part3(x):
for element in x:
print(element)
现在注意:
答案 2 :(得分:0)
你可以看到'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]