扇贝编程python学习笔记-基础篇5
作者:互联网
文章目录
第七关
知识点复习
学习用时:30min
随堂测验+上机作业:30min
随堂作业正确率:8/10
1.print和return的区别
return | print() | |
---|---|---|
概念 | python关键字 | 函数 |
作用 | 只能在函数内使用,在函数内不直接显示数据内容,但将结果传到函数外供使用 | 随处可见,在函数内直接打印数据内容,但打印完就销毁结果 |
return 是将函数内的计算结果传输到函数外的唯一通道。内置函数 print() 实现的输出功能,将结果显示出来,一般用于验证。
def func1(x):
y = x + 1
def func2(x):
y = x + 1
return y
y1 = func1(1) # y1 的值为 None
y2 = func2(1) # y2 的值为 2
print(y1) # 输出:None, 因为没有return,所以阅后即焚
print(y2) # 输出:2
#----------------------------------------------------------------------------
def math(x):
y = x + 1
print(y)
print(math(3))
#输出结果
#4
#None
2.return 语句的“陷阱”
函数的 return 语句执行后,就会退出函数,所以函数内部,在 return语句后执行的代码是无效的。
def f(x):
y = 2 * x + 1
return y
print(y)
f(3) # 没有结果打印,因为return执行后整个函数就下班了
#----------------------------------------------------------------------------
def f(x):
y = 2 * x + 1
if x > 2:
return y
else:
print(y)
f(1)
# 输出:3
# 因为 if ... else 语句的条件判断中,return y 和 print(y) 在逻辑上是平行的代码并没有执行到return这个下班节点,所以可以有结果
# 但如果x=5或者是任何>2的数字 就都不会有结果
3.报错处理
# 报错:SyntaxError: bad input on line 1
# (语法错误:第 1 行输入有问题)
# 报错:SyntaxError: invalid character in identifier
# (语法错误:识别不了不支持的字符) 一般是中文标点
# 报错:IndentationError: unindent does not match any outer indentation level
# (缩进错误:缩进变小了,但是其它地方匹配不到和他一样的缩进层级)
# 报错:SyntaxError: non-default argument follows default argument
# (语法错误:非默认参数被放到了默认参数后面)
# 报错:NameError: name 'x' is not defined
# (变量名错误:变量名 'x' 没有被定义)
4.学习巩固
练习1
每月本金 = 贷款本金 / 还款期数,这部分是固定不变的。
每月利息 = (贷款本金 - 累计已还本金) × 月利率
等额本金的每月偿还本息和计算公式如下:
每月偿还本息和 = 贷款本金 / 还款期数 + (贷款本金 - 累计已还本金) × 月利率
#假设贷款 p=100 万,计划分 30 年还完 还款期数n=360,月利率r = 0.41%,m 是还款月数
def calc_loan(p, n, r, m):
x1 = p / n
#累计已还本金
h = (m - 1) * x1
x2 = (p - h) * r
y = x1 + x2
return y
# 打印第 10 个月的偿还本息和
print(calc_loan(1000000, 360, 0.0041, 10))
这个累计已还本金我竟然想了半天,果然是太久没动脑子了
练习 2
内置 abs() 函数的作用是计算一个数的绝对值,写一个my_abs() 实现此功能。
def my_abs():
x = int(input(print("请输入一个数字:")))
if x > 0:
return x
else:
return -x
print(my_abs())
练习3 递归计算斐波那契数列
这个练习感觉到了自己思维的局限性,还需要多练习
#这个是自己写的
def fibo(n):
if n == 1:
return 0
if n == 1:
return 0
return fibo(n-1) + fibo(n-2)
#----------------------------------------------------------------------------
#这个是参考答案的
def fibo(n):
if n <= 1:
return n
else:
return fibo(n-1) + fibo(n-2)
print(fibo(10)) # 55
print(fibo(23)) # 28657
标签:return,函数,python,扇贝,编程,报错,本金,print,def 来源: https://blog.csdn.net/qq_35048430/article/details/108580442