01、whileTrue函数:
用于无限循环的函数情况:
while True:
pass
else:
return
02、try while 函数:
用于可能报错的情况
try:
english = int(input('请输入英语成绩:'))
python = int(input('请输入Python成绩:'))
java = int(input('请输入Java成绩:'))
except:
print('成绩输入错误')
continue
03、插入字典:
通过 key:value 的方式写入字典中
student = {'id': id,'name': name,'english': english,'python':python,'java':java}
04、with as 的方式读取文件信息的方式:
读取文件不会剪出原文件,注意后面的格式限制:’utf-8‘,防止中文乱码的情况
with open(filename,'r',encoding='utf-8') as rfile:
student = rfile.readlines()
05、文件格式:
python 默认只能写入和读出 “str”格式文件,读取后可以用eval()函数进行转换
同时注意读出时格式转换时字典外面的大括号被转换掉了
for item in student:
d = dict(eval(item))
if id == d['id']:
student_lst.append(d)
elif name == d['name']:
student_lst.append(d)
06、判断文件是否存在:
需要导入 os.path 模块
函数:os.path.exists(文件名)
if os.path.exists(filename):
07、文件读取问题
先读出文件另存,再进行修改
with open(filename, 'r', encoding='utf-8') as rfile:
student_old = rfile.readlines()
with open(filename,'w',encoding='utf-8') as newfile:
for item in student_old:
d = eval(item)
08、写入命令:
file.write(str())
只能写入 “str"格式文件
new_file.write(str(old_item)+'\n')
09、跳出循环命令:
在函数内部可以用:break / return
退出函数的输出方式参考
anw = input('是否继续修改(y/n):')
if anw != 'y':
print('修改完成')
break
10、判断文件是否存在,同时分行读取存进列表:
if os.path.exists(filename):
with open(filename,'r',encoding='utf-8') as rfile:
old_info = rfile.readlines()
for item in old_info:
sort_list.append(eval(item))
12、给字符串赋布尔值:
与变量无关,不管变量咋写,可以同时含有变量和布尔值信息
if sort_reverse == '1':
sort_reverse_bool = True
elif sort_reverse == '2':
sort_reverse_bool = False
else:
sort_reverse_bool = True
sort()
13、sort( ) 排序函数:
- 默认格式:
list.sort(cmp=None, key=None, reverse=False)
- 可选参数, 如果指定了该参数会使用该参数的方法进行排序。
- reverse :排序规则,reverse = True 降序, reverse = False 升序(默认)
if sort_way == '1':
sort_list.sort(key=lambda x:int(x['english']),reverse=sort_reverse_bool)
elif sort_way == '2':
sort_list.sort(key=lambda x:int(x['python']),reverse=sort_reverse_bool)
elif sort_way == '3':
sort_list.sort(key=lambda x:int(x['java']),reverse=sort_reverse_bool)
elif sort_way == '4':
sort_list.sort(key=lambda x:int(x['english'])+int(x['python'])+int(x['java']),reverse=sort_reverse_bool)
14、lambda函数
- 匿名函数 :
lambda [arg1 [,arg2,.....argn]]:expression
- 其中,lambda 是 Python 预留的关键字,[arg…] 和 expression 由用户自定义。
- 冒号前面是变量,后面是函数
(key=lambda x:int(x['python'])
相当与将取变量的 int 值
15、通过问文件个数识别
通过len( )长度函数直接输出个数,不需要遍历
if students:
print('一共有{}名学生。'.format(len(students)))
16、format函数的使用
- 通过 “> < ^”控制对其方式 ,如图二
- 可以通过字典传入:在字典前加入**,如图三
format_data='{:^6}\t{:^12}\t{:^8}\t{:^8}\t{:^8}\t{:^8}'
for item in query_student:
print(format_data.format(item.get('id'),
item.get('name'),
item.get('english'),
item.get('python'),
item.get('java'),
int(item.get('english'))+int(item.get('python'))+int(item.get('java'))))
print('{:^20}'.format('拦路雨'))#居中 :^ 宽度14
print('{:>20}'.format('拦路雨'))# 右对齐 :> 宽度14
print('{:<20}'.format('拦路雨')) # 左对齐 :< 宽度14
print('{:*<20}'.format('拦路雨')) # :后边可跟填充物,只允许一个字符
grade = {'I' : '拦路雨', '状态': '写博客'}
print('{I}比较无聊,在{状态}'.format(**grade))#字典前加上**
17、存储函数:
def save(students):
try:
student_txt=open(filename,'a',encoding='utf-8') #以追加模式打开
except Exception as e:
student_txt = open(filename, 'w',encoding='utf-8') #文件不存在, 创建并打开
for item in students:
student_txt.write(str(item)+'\n') #按行存储,添加换行符
student_txt.close()
18、防止外部函数调用时发生错误:
if __name__ == '__main__':
main()