本周继续跟着娟子姐学python,学习变量的作用域和如何写BUG(找BUG)
局部变量,函数内定义,作用范围仅限于函数内;
全局变量,函数外定义的,函数内外都能用;若局部变量使用global声明,变量就变为了全局变量;
定义:函数内调用函数本身,称为递归
优点:思路和代码简洁
缺点:占用内存过多,效率低下
程序可能出现的问题,就是BUG
可能是粗心,也可能是不熟练,又或者是思路不对导致的,等等。
粗心导致的简单错误,可以通过自查来避免掉:
1、漏了末尾的冒号,if、else、for/while等
2、缩进错误
3、英文符号写成中文
4、字符串拼接,将字符串和数字拼在一起
5、没有定义变量
6、==比较运算符和=赋值运算符混用
思路不清晰的错误,也可以这样快速处理:
1、可以使用print输出查找错误
2、可以先使用#注释部分代码
3、本质上还是基础知识不牢固导致的,需要加强练习
实际还是要多练习!
主要分类:
使用递归输出斐波那契数列
# 斐波那契数列
def fib(n):
if n==1:
return 1
elif n==2:
return 1
else:
return fib(n-1)+fib(n-2)
#逐个打印
for i in range(1,7):
print(fib(i))
结果:
可以运行一下,看下代码的BUG有哪些
# 示例1
age=input('请输入你的年龄:')
if age>18
print('成年人,做事要负法律责任了')
# 示例2
while i<10:
print(i)
# 示例3
for i in range(3):
uname=input('请输入用户名:')
pwd=input('请输入密码:')
if uname='admin' and pwd='admin':
print('登陆成功')
else
print('输入有误')
else
print('对不起,三次均输入错误')
其中的BUG:
示例1:
输入类型是字符串,不能比较,需要将str型转为int型
if没有带上冒号
示例2:
没有给i赋初始值
无限循环,没有退出while循环的条件
注意print的括号是中文括号,应该要使用英文括号才可以
示例3:
没有给i赋初值
if中使用’=‘来比较不正确,应该使用逻辑条件比较符号’==’
else后面少了冒号
这点很有用,不仅可以将报错信息提示出来,还不影响程序继续运行
try:
n1=int(input('请输入第一个整数'))
n2=int(input('请输入第二个整数'))
result=n1/n2
except BaseException as e:
print('出错了')
print(e)
else:
print('结果为:',result)
finally:
print('无论结果是否异常,都会执行的代码')
print('程序结束')
结果
请输入第一个整数11
请输入第二个整数0
出错了
division by zero
无论结果是否异常,都会执行的代码
程序结束
本周学习找BUG方法,其实在其他语言中也可以借鉴。想要程序BUG少,就得多练习啊。(多踩坑)加油加油!
因篇幅问题不能全部显示,请点此查看更多更全内容