Tag标签适用于循环中标记状态
用法一:
#使用tag标签作为标记,while的条件为tag值,如果tag值为false,则不需要一层一层退出 tag = True while tag: print("level-<<<") data = input("\033[1;43m请输入level1:\033[0m") if data == 'quit': tag = False break while tag: print("level2<<<") data = input("请输入level2:") if data == 'quit': tag = False break while tag: print("level3<<<") data = input("请输入level3:") if data == 'quit': tag = False break
好处:如果不使用tag,则在第三个循环中输入quit,则会返回上一层,需要一层层退出。使用了tag标签则不需要在意当前在哪个循环,都可退出全部的循环
用法二:
def feach(data): print("这是查询功能") backband_data = "backband %s\n" % data#增加拼接 print('\033[1;43m用户查询的数据是:\033[0m',backband_data)#增加颜色 tag = False#打标记,默认是false ret = [] with open("conf.txt","r") as f: for i in f: if i == backband_data: tag = True#代表找到此行,则以下不执行,跳到定位的下一行 continue if tag and i.startswith('backband'):#再遇到以backband开头则代表输出结束 break if tag:#代表找到了该行,进行输出 ret.append(i) print('\033[1;43m%s\033[0m' %i,end='') return ret def add(): pass def change(): pass def delate(): pass if __name__ == '__main__': ''' msg是注释说明 ''' msg = """ 1:查询 2:添加 3:修改 4:删除 5:退出 """ choice_dic = { "1": feach, "2": add, "3": change, "4": delate, } while True: print(msg) choice = input("请输入选择:").strip() if not choice:continue#如果choice为空则继续下一轮循环 if choice == "5":#如果choice=5则退出 break data = input("请输入数据:").strip() res = choice_dic[choice](data)#执行相应的方法 print(res)
conf.txt内容如下:
genord severive 0.0.0.0 kwg kw gkefskdfa genord23r severive 0.0.0.0 kwg kw gkefskdfa backband www.oldboy1.org severive 0.0.0.0 kwg kw gkefskdfa backband www.oldboy2.org severive 0.0.0.0 kwg kw gkefskdfa backband www.oldboy3.org severive 0.0.0.0 kwg kw gkefskdfa