- 循环(while和for)
1.beake和continue控制:前者跳出循环,后者继续下次循环;
2.变量的重置:涉及变量重置(如开关变量)的代码位置要灵活运用。
3.循环嵌套:
跳出(继续下一次循环1)内层循环--break(continue);
跳出外层循环:1.依赖内层情况--内层循环设置开关变量,外层循环据开关变量break;2.不依赖内层循环--break;
4.注意循环变量的控制,不要陷入死循环。
- list列表
1.注意列表的再操作问题;比如,删除后再查询。
2.下标越界;
3.列表是有序,可重复的,使用列表的情况下,要考虑重复有没有影响;若有,可考虑弃用或添加if语句,排除重复。
字典:
1.for循环中,循环得到key(在大字典里循环)没有get方法,但在value值里循环得到的若是一个小字典,它会有get()方法
2.字典的键key,若是变量不加引号,不是变量,或不在本函数内声明的变量要加引号。
3.避免键值错误的方法,要使用复制粘贴。
users={'1':{'account':'account','pswd':'pswd'}}
for i in users:
i.get('account')# 'str' object has no attribute 'get'
for value in users.values():
value.get('account')
print(value.get('account'))#account
if结构:
1.没有else的多分支结构不会报错,但一般慎用,若嵌套在其他多分支结构容易报错或者看错。
i=2
if i==1:
print(1)
elif i==2:
print(2)
elif i==3:
print(3)
i = 0
if i!=0:
if i == 1:
print(1)
elif i == 2:
print(2)
elif i == 3:
print(3)
else:
print(0)
2.在写好了if结构代码后,添加了一句for遍历,相应的else要修改所缩进值.
函数:
1.函数尽量保证1功能一函数,这样,便于后续增加代码时,可以适当调用函数来减少代码的重复。
通过下标得到的数据,依照数据的类型具有什么属性
索引使用时在方括号内,【start:stop:step】
def a():
print("a")
c=a()
print(c)
c=None
全局变量:
语法:global u
u=a
错误示例:global u = a
类方法的递归调用
class Core:
def __init__(self,state):
self.state=state
def show_index(self):
'''展示首页·'''
self.show()
错误示例:
class Core:
def __init__(self,state):
self.state=state
def show_index(self):
self.show(self)
def user_change_password(self):
'''修改密码'''
old_pd=input('请输入旧密码:')
print(old_pd)
if old_pd == self.password:#同一账户
new_pd = input('请输入新密码:')
if new_pd == old_pd :
print("旧密码与新密码相同!修改失败!")
return 'error'
else:
self.password = new_pd
print("修改成功",core.online.username,'的新密码为',core.online.password)
return 'ok'
else:
return 'error'
print(old_pd == self.password,self.password,'11' )
return show_index()
print(old_pd == self.password...不会执行,因为无论进入if 1/0都会被return直接结束函数所以最后两行不会执行
class Person:
def __init__(self):
self.__online = None
def set_online(self,user):
self.__online = user
def get_online(self):
return self.__online
def engin():
p.set_online(User('fgdg'))
p=Person()
d={'1':p.get_online().account}
engin()
print(d['1'])#'NoneType' object has no attribute 'account'
# 出错原因:engine执行前,字典先初始化,p.get_online()=None,执行engine()后,p.get_online()=User('fgdg')
# 单子典已经执行,不会改变
面向对象中的方法和地址
def set_online(self,f_user):
self.__online=f_user
print (self.set_online)是一个方法,不加括号,输出地址
print (self.set_online())输出地址
面向对象:
在面向对象的开发设计过程中,要注意几个类之间的互通,结构的严谨完整