一、猜字游戏
#猜字游戏(从1到10) import easygui as g import random g.msgbox('欢迎进入探险之路!') screct = random.randint(1,10) msg = '猜一下尘封的幸运数字是那个' title = '数字探险之路' guess = g.integerbox(msg,title,lowerbound=1,upperbound=10) while 1: if guess == screct: g.msgbox('很牛啊!') g.msgbox('猜对有奖励啊') break else: if guess > screct: g.msgbox('兄弟猜的大了!') else: g.msgbox('兄弟猜的有点小!') guess = g.integerbox(msg,title,lowerbound=1,upperbound=10) g.msgbox('游戏结束,不玩啦!')
二、实现一个等级用户信息的页面(带*号必填,要求一定要有输入并且不能为空格)
''' |--实现一个等级用户信息的页面(带*号必填,要求一定要有输入并且不能为空格) |--要求用户名,真实姓名,手机号码,E-mail必填,固定电话,QQ非必填 ''' import easygui as g msg = '输入以下用户信息' title = '账户中心' fileNames = ['*用户名','*真实姓名','固定电话','*手机号码','QQ','*E-mail'] fileValues = [] fileValues = g.multenterbox(msg,title,fileNames) while 1: if fileValues == None: break errmsg = "" for i in range(len(fileNames)): option = fileNames[i].strip() if fileValues[i].strip() == "" and option[0] =="*": errmsg += ('【%s】为必填项。\n\n' %fileNames[i]) if errmsg == "": break fileValues = g.multenterbox(errmsg,title,fileNames,fileValues) print('用户资料如下:%s'% str(fileValues))
三、提供一个文件浏览框,让用户选择需要打开的文本文件,打开并显示文件内容
''' |--打开用户选择的文件,显示文本内容 |--比较文件是否修改过,如果修改过,则提示:覆盖保存,不保存,另存外 ''' import easygui as g import os file_path = g.fileopenbox(default='/Users/yixia/Desktop/*.txt') with open(file_path) as old_file: title = os.path.basename(file_path) msg = '文件【%s】的内容如下:'%title text = old_file.read() text_after=g.textbox(msg,title,text) if text != text_after[:-1]: choice = g.choicebox('检测到文本内容发生了变化,请做如下修改','警告',('覆盖保存','不保存','另存为...')) if choice == "覆盖保存": with open(file_path,'w') as old_file: old_file.write(text_after[:-1]) if choice == "不保存": pass if choice == "另存为...": another_path = g.filesavebox(default='/Users/yixia/Desktop/*.txt') if os.path.splitext(another_path)[1]!="*.txt": another_path += '.txt' with open(another_path,'w') as new_file: new_file.write(text_after[:-1])
四、4. 写一个程序统计你当前代码量的总和,并显示离十万行代码量还有多远??-D+=mG
RN'o@:cu(O5=&?{t2q>!SK[|<;QPV
-
- 要求一:递归搜索各个文件夹
- 要求二:显示各个类型的源文件和源代码数量
- 要求三:显示总行数与百分比
import easygui as g import os #此方法用于展示结果 def show_result(start_dir): lines = 0 total = 0 text = "" #遍历这个文件内的源文件,输入最终结果:什么文件多少个代码多少行 for i in source_list: #统计每一个文件的代码行 lines = source_list[i] #统计多少行代码 total += lines text += "【%s】源文件 %d 个,源代码 %d 行\n" % (i, file_list[i], lines) title = '统计结果' msg = '您目前共累积编写了 %d 行代码,完成进度:%.2f %%\n离 10 万行代码还差 %d 行,请继续努力!' % (total, total / 1000, 100000 - total) g.textbox(msg, title, text) #统计每个文件有多少行代码 def calc_code(file_name): lines = 0 with open(file_name) as f: print('正在分析文件:%s ...' % file_name) try: for each_line in f: lines += 1 except UnicodeDecodeError: pass # 不可避免会遇到格式不兼容的文件,这里忽略掉...... return lines #打开文件夹查找文件 def search_file(start_dir): #改变当前工作目录到指定的路径 os.chdir(start_dir) #os.listdir(os.curdir):列举当前目录的文件名,遍历所有文件 for each_file in os.listdir(os.curdir): #已后缀分割文件,放在ext文本内 ext = os.path.splitext(each_file)[1] if ext in target: lines = calc_code(each_file) # 统计行数 # 还记得异常的用法吗?如果字典中不存,抛出 KeyError,则添加字典键 # 统计文件数 try: file_list[ext] += 1 except KeyError: file_list[ext] = 1 # 统计源代码行数 try: source_list[ext] += lines except KeyError: source_list[ext] = lines #判断是否存在查找文件的一个目录 if os.path.isdir(each_file): search_file(each_file) # 递归调用 os.chdir(os.pardir) # 递归调用后切记返回上一层目录 target = ['.c', '.cpp', '.py', '.cc', '.java', '.pas', '.asm'] file_list = {} source_list = {} g.msgbox("请打开您存放所有代码的文件夹......", "统计代码量") path = g.diropenbox("请选择您的代码库:") search_file(path) show_result(path)