下面的代码返回NameError:未定义名称'c'。分数函数提供c,d的返回值,但是我很难将它们传递到adjust函数中以获取e,f输出。我怎样才能将c,d进入调整功能?
def score():
a=1
b=2
def outcome_1():
c=a+1
d=b-1
return c,d
def outcome_2():
c=a+2
d=b-2
return c,d
if a>0:
outcome_1()
elif a<0:
outcome_2()
def adjust(score_results):
def adjust_1():
e=c+5
f=d+4
print(e,f)
def adjust_2():
e=c+4
f=d+5
print(e,f)
adjust_1()
x=score()
adjust(x)
答案 0 :(得分:0)
首先,您需要在得分函数中添加返回值,此刻只有结果函数返回值,然后才保留在得分函数的范围内
quamrana也提出了建议,您应该考虑更改if条件,我已经添加了一条建议作为评论
def score():
a=1
b=2
def outcome_1():
c=a+1
d=b-1
return c,d
def outcome_2():
c=a+2
d=b-2
return c,d
# Here you should consider changing it to if - else or adding >= 0 in order to cover all possible options
if a>0:
return outcome_1()
elif a<0:
return outcome_2()
然后,将x作为参数传递给函数Adjust wich是正确的做法,但是您不使用参数score_results来保存参数x(已传递)的指针
因此,您可以在adjust函数的开头定义c和d,以便将这些变量包含在adjust范围内:
def adjust(score_results):
c, d = score_results
def adjust_1():
e=c+5
f=d+4
print(e,f)
def adjust_2():
e=c+4
f=d+5
print(e,f)
adjust_1()
x=score()
adjust(x)
答案 1 :(得分:-1)
首先,当您调用result_1和result_2时,您什么也不返回, 其次,当您从函数返回多个值时,它会返回一个包含这些值的元组,因此您需要以这种方式在adjust函数中进行访问。您不能指望python理解score_results包含c和d,它只是将两个变量的值都作为元组。这是您需要在代码中进行的修改。
def score():
a=1
b=2
def outcome_1():
c=a+1
d=b-1
return c,d
def outcome_2():
c=a+2
d=b-2
return c,d
if a>0:
return outcome_1()
elif a<0:
return outcome_2()
def adjust(score_results):
def adjust_1():
e=score_results[0]+5
f=score_results[1]+4
print(e,f)
def adjust_2():
e=score_results[0]+4
f=score_results[1]+5
print(e,f)
adjust_1()
x=score()
adjust(x)