python初学者,最近在看Think Python这本书,里面提到堆栈图可以方便了解变量的取值,也有一些练习题。
其中一道题我不会,通过搜索找到了答案……尴尬的是,有了答案还是看不懂。请教下各位老哥:
习题及参考答案如下:
[Python] 纯文本查看 复制代码 """
Exercise 6.1.
Draw a stack diagram for the following program. What does the program print?
def b(z):
prod = a(z, z)
print(z, prod)
return prod
def a(x, y):
x = x + 1
return x * y
def c(x, y, z):
total = x + y + z
square = b(total)**2
return square
x = 1
y = x + 1
print(c(x, y+3, x+y))
"""
def b(z):
prod = a(z, z)
print(z, prod)
return prod
def a(x, y):
x = x + 1
return x * y
def c(x, y, z):
total = x + y + z
square = b(total)**2
return square
x = 1
y = x + 1
print(c(x, y+3, x+y))
'''
main:
x ---> 1
y ---> 2
c:
x ---> 1
y ---> 5
z ---> 3
total ---> 9
square ---> 8100
b:
z ---> 9
prod ---> 90
a:
x ---> 9
y ---> 9
x ---> 10
Program prints:
9 90
8100
'''
他这里是先main,然后c-b-a的顺序,请问下为什么这样呢?然后就是从square开始,我就看不懂这些值都是怎么得来的了。最主要就是关于变量b,z--->9是怎么来的呢? |