2017-02-25 122 views
2

我需要定义一个函数T(i),它具有从i = 1到1 = 3的相同值(比如说10),以及i = 4时的不同值(比如说20)。我写了下面的代码,Python函数:多个参数

def T(i): 
for i in range(1, 4): 
    y= 10 
    return y 
if i==4: 
    y= 20 
    return y 

for i in range(1, 5): print(i,T(i)) 

从i = 1到1 = 3的值打印正确,但是i = 4的值是错误的。好像第二个参数没有正确分配。请帮忙。

在此先感谢。

+0

的'如果在'for'之后的块被无法访问。第一个'return'将控制权移交给调用者。你到底是什么? –

+0

您的缩进(或缺失)不正确,可能是这个问题。 –

+0

感谢您的回复ILI,但缩进在原始代码中是正确的。 – Ashok

回答

1

你需要有特殊情况处理的第一

def T(i): 
    if i < 4: 
    return 10 
    else: 
    return 20 

for i in range(1, 5): print(i,T(i)) 
+0

非常感谢Sarvex,解决了这个问题。 – Ashok

1

没有必要在功能for循环,当你从一个循环调用T()反正,和return将退出功能,所以if语句无法执行。

更简单的方法来做到这一点是:

def T(i): 
    return 20 if i==4 else 10 

然而,定义一个函数是没有必要做到这一点,你可以实现在一个列表理解相同的条件:

[20 if i==4 else 10 for i in range(1,5)]