|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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()
- '''
- #看完答案,感觉自己代码的可读性很低,代码看起来思路不太清晰,哎~
复制代码
|
|