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()