|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
1.关于局部变量:
result = []
def get_digits(n):
if n > 0:
result.insert(0, n%10)
get_digits(n//10)
get_digits(12345)
print(result)
以上是小甲鱼零基础python24讲动动手第二题的答案代码。虽然我能够理解,但是这个result的list在函数外,应该被当做全局变量,那么按照上课讲的内容,在函数体内的result应该是和全局变量同名的局部变量?这样的话为什么最后输出的result还是正确的,不是一个空的list呢?
2.关于递归
#decimal to binary
def binary(x, result = []):
if(x == 0):
result.append(0)
for i in range(len(result)):
print(result.pop(),end = '')
elif(x == 1):
result.append(1)
for i in range(len(result)):
print(result.pop(),end = '')
else:
result.append(x%2)
binary(x//2,result)
以上是我自己的十进制转化二进制的代码,作业要求是用递归,我虽然调用了函数自身,但仔细一想好像不符合课上讲的要“归”的过程,就是没有到达结束条件后,一层一层返回的过程。不知道这个算不算是递归?
- price = 90
- def ChangePrice():
- price = 88//[color=Red]这个语句有歧义:1、可以是创建局部变量。2、修改全局变量。所以默认为创建局部变量[/color]
- print('函数内修改后的价格:',price)
- print('最终的价格:',price)
复制代码- result = []
- def get_digits(n):
- if n > 0:
- result.insert(0, n%10)//[color=Red]这个语句非常明确,就是修改全局变量。如果你把这个改成result = [];result.insert(0, n%10);那么result就是局部变量,因为他是有歧义的,默认创建局部变量[/color]
- get_digits(n//10)
- get_digits(12345)
- print(result)
复制代码
|
|