| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
 本帖最后由 yoyo2 于 2020-8-25 15:20 编辑  
- ''' 
 
 - 0. 先练练手,把我们的刚开始的那个猜数字小游戏加上界面吧?
 
 - import easygui as g
 
 - import random
 
  
- secret = random.randint(1,10)
 
 - temp = g.enterbox(msg="不妨猜一下小甲鱼现在心里想的是哪个数字:",title="数字小游戏")
 
 - while True:
 
 -     try:
 
 -         guess = int(temp) 
 
 -         if guess == secret:
 
 -             g.msgbox(msg="我草,你是小甲鱼心里的蛔虫吗?!",title="数字小游戏",ok_button='你说呢?')
 
 -             g.msgbox("哼,猜中了也没有奖励!",title="数字小游戏",ok_button='反正我猜中了')
 
 -             break
 
 -         else:
 
 -             if guess > secret:
 
 -                 g.msgbox(msg="哥,大了大了~~~",title="数字小游戏",ok_button='继续')
 
 -             else:
 
 -                 g.msgbox(msg="哥,小了小了~~~",title="数字小游戏",ok_button='继续')
 
 -             temp = g.enterbox(msg="哎呀,猜错了,请重新输入吧:",title="数字小游戏")       
 
 -     except ValueError:      
 
 -             temp = g.enterbox(msg="哎呀,猜错了,请重新输入吧:",title="数字小游戏")
 
 -         
 
 - g.msgbox(msg="游戏结束,不玩啦^_^",title="数字小游戏")  
 
 - '''
 
  
- ''' 
 
 - 1. 如下图,实现一个用于登记用户账号信息的界面(如果是带 * 号的必填项,要求一定要有输入并且不能是空格)
 
 - #这题还没完成,后面有时间再完成
 
 - import easygui
 
 - while True: 
 
 -     values = easygui.multenterbox(msg="【*真实姓名】为必填项。\n 【*手机号码】为必填项。\n【*E-mail】为必填项。",title='账号中心',fields=['*用户名','*真实姓名','固定电话','*手机密码','QQ','*E-mail'])
 
 -     if (values[0] == '') or (values[1] == '') or (values[3] == '') or (values[5] == ''):#空格怎么判断啊
 
 -         easygui.msgbox(msg="带*号为必填项",title="账号中心")
 
 -     else:
 
 -         break 
 
 - '''
 
 - '''
 
 - 2.提供一个文件夹浏览框,让用户选择需要打开的文本文件,打开并显示文件内容。
 
 - '''
 
 - '''
 
 - import easygui as g
 
 - import os
 
  
- path = g.diropenbox(msg="请选择一个文件夹",title="显示文件内容")
 
 - file = g.fileopenbox(default= path,filetypes= ['*.txt'])
 
 - with open(file) as f:
 
 -     old_file = f.read()
 
 -     g.codebox(msg= "文件【%s】的内容如下:" % os.path.split(file)[1], title="显示文本内容",text = old_file)#这里还以为test后面跟的是文件路径的,其实是要显示的文本内容
 
 - '''
 
 - '''
 
 - 3.在上一题的基础上增强功能:当用户点击“OK”按钮的时候,比较当前文件是否修改过,如果修改过,则提示“覆盖保存”、”放弃保存”或“另存为…”并实现相应的功能。
 
 - '''
 
 - '''
 
 - import easygui as g
 
 - import os
 
  
- def choice(new_file,file_name):
 
 -     choose = g.buttonbox(msg="检测到文件内容发生改变,请选择以下操作:",title="警告",choices=('覆盖保存','放弃保存','另存为'),default_choice= '放弃保存',cancel_choice='放弃保存')
 
 -     if choose == '覆盖保存':
 
 -         with open(file_name,'w') as f:
 
 -             f.write(new_file)
 
 -         return None#这貌似可以提高效率
 
 -     if choose == '另存为':
 
 -         path = g.diropenbox(msg="请选择一个文件夹",title="另存为")
 
 -         new_file_name = g.filesavebox(msg="请选择一个文件夹",title="另存为",default=path + os.path.splitext(file_name)[0])
 
 -         with open(new_file_name,'w') as f:
 
 -             f.write(new_file)
 
 -             g.msgbox(msg="保存成功",title="提示")
 
 -         return None
 
 -     if choose == '放弃保存':
 
 -         return None
 
  
- try:
 
 -     file = g.fileopenbox(default='*',filetypes= ['*.txt'])
 
 -     with open(file) as f:
 
 -         old_file = f.read()
 
 -         new_file = g.codebox(msg= "文件【%s】的内容如下:" % os.path.split(file)[1], title="显示文本内容",text = old_file)#这里还以为test后面跟的是文件路径的,其实是要显示的文本内容
 
 -         #用户点‘OK’之后开始进行比较
 
 -         if old_file != new_file:
 
 -             choice(new_file,file)
 
 - except:
 
 -     g.exceptionbox() 
 
 - ''' 
 
 - '''
 
 - 4. 写一个程序统计你当前代码量的总和,并显示离十万行代码量还有多远?
 
  
-     要求一:递归搜索各个文件夹
 
 -     要求二:显示各个类型的源文件和源代码数量
 
 -     要求三:显示总行数与百分比
 
 - '''
 
 - ''' #coding:utf-8
 
 - import easygui as g
 
 - import os
 
  
- def get_file(path):#已完成
 
 -     #进行统计
 
 -     os.chdir(path)
 
 -     for member in os.listdir(os.curdir):
 
 -         line = 0
 
 -         type = os.path.splitext(member)[1]
 
 -         if type in file_type:#文件类型正确,开始统计行数
 
 -             with open(member,'r',encoding='UTF-8') as f:
 
 -                 print('正在分析文件:%s ...' % member)
 
 -                 try:#统计行数
 
 -                     for each_line in f:
 
 -                         line += 1
 
 -                 except UnicodeDecodeError:
 
 -                     pass#无法遇到避免格式不正确的文件
 
 -                 try:#统计文件数
 
 -                     file_count[type] += 1
 
 -                 except KeyError:
 
 -                     file_count[type] = 1
 
 -                 try:#统计行数
 
 -                     line_count[type] += line
 
 -                 except KeyError:
 
 -                     line_count[type] = line    
 
 -                            
 
 -         if os.path.isdir(member):
 
 -             get_file(path + os.sep + member)
 
 -             os.chdir(os.pardir)#忘记这步,递归调用后切记返回上一层,这里出错了
 
  
- def print_sum():#打印结果    
 
 -     sum = 0
 
 -     aim = 100000
 
 -     text_print = []
 
 -     for i in line_count:
 
 -         lines = line_count[i]
 
 -         sum += lines
 
 -         text_print += ("【%s】源文件 %d 个,源代码 %d 行" % (i,file_count[i],lines))#不懂打印想要的格式
 
  
-     msg = "您目前共累计编写了 %d 行代码,完成进度:%.2f %%\n离10万行代码还差 %d 行,请继续努力" % (sum , sum/1000,aim - sum)#不懂怎么输出百分数
 
 -     title="统计结果"
 
 -     g.textbox(msg,title,text_print)
 
  
 
- file_type = ['.py']#要统计的文件类型
 
 - file_count = {}#统计文件个数
 
 - line_count = {}#统计文件类型与其对应的代码行数
 
 - path = g.diropenbox(msg="请选择您的代码库:",title="浏览文件夹",default='*')
 
 - get_file(path)
 
 - print_sum()
 
 -  '''
 
 - #看完答案,感觉自己代码的可读性很低,代码看起来思路不太清晰,哎~
 
  复制代码 
 
 
 |   
 
 
 
 |