下面的代码返回NameError:名字“C”没有定义。比分功能提供返回值C,d但我有困难的时候将它们传递到调整函数来获得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)
首先,你需要添加的得分函数返回,此刻唯一的结局函数返回的值,那么它在比分功能的范围仅保留
因为它也被quamrana建议你应该考虑改变你的,如果条件下,我添加了一个建议的评论
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作为参数传递给函数调整至极是做正确的事,但你不使用它持有指针的自变量x的参数score_results(已通过) 所以,你可以为了有调整的范围内提纲变量的调节功能的开头定义c和d:
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)
首先你不返回任何东西的,当你调用outcome_1和outcome_2,其次,当您返回从函数返回一个包含这些值,因此您需要访问它以这种方式调节内部功能的元组多个值。你不能指望蟒明白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)